(计算机应用技术专业论文)基于龙芯处理器进程级虚拟机的优化.pdf_第1页
(计算机应用技术专业论文)基于龙芯处理器进程级虚拟机的优化.pdf_第2页
(计算机应用技术专业论文)基于龙芯处理器进程级虚拟机的优化.pdf_第3页
(计算机应用技术专业论文)基于龙芯处理器进程级虚拟机的优化.pdf_第4页
(计算机应用技术专业论文)基于龙芯处理器进程级虚拟机的优化.pdf_第5页
已阅读5页,还剩51页未读 继续免费阅读

(计算机应用技术专业论文)基于龙芯处理器进程级虚拟机的优化.pdf.pdf 免费下载

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

文档简介

摘要 摘要 龙芯处理器是我国自主研发的高性能通用处理器,它兼容m i p s 6 4 指令集和一些专用指 令,采用先进的结构设计技术,充分开发指令级并行性,已跻身世界先进通用处理器的行列。 龙芯处理器基于m i p s 架构,而在当今占据大型的服务器主导地位是x 8 6 架构,大部分桌面 操作系统和应用软件也都基于x 8 6 。龙芯处理器为了能够广泛地运行服务器类应用,实现与 x 8 6 架构的兼容就成为了必要的任务;另外,x 8 6 架构的应用程序更加多样化,很多商业的 软件都是基于x 8 6 架构的,所以龙芯处理器要想更为广泛地运行多样化的应用,也非常需要 实现对x 8 6 的兼容。 目前有很多开源的虚拟机平台,可以实现m i p s 到x 8 6 平台的异构支持,q e m u 动态二进 制翻译器就是其中的一种,它有系统级和进程级两种工作模式,并且可以实现多种异构平台 的映射。具有依赖平台多样、翻译效率相对较高、开源易移植等优点,因此选择q e m u 作为 二进制翻译的主要媒介,实现龙芯处理器的进程级虚拟机,以达到龙芯处理器兼容x 8 6 应用 程序的目的。 由于二进制翻译器是纯软件的翻译,程序的运行速度成为了关键的问题。龙芯处理器要 支持虚拟机,仅依靠软件的实现难以满足人们的需求,对虚拟机加速也就成为了首要的问题。 龙芯三号处理器的设计规范已经添加了相应的硬件支持以实现对虚拟机的性能需求,但除此 之外软件方面的优化作用也不可忽视。本文正是通过对q 咖虚拟机的改造和添加,达到了 优化和加速的目的。改造和优化主要包括寄存器处理优化、非对齐访存指令优化和多媒体指 令优化三方面。在龙芯2 f 处理器和龙芯3 号单核f p g a 平台上,使用s p e c 2 0 0 0 进行测试, 测试结果表明,最终获得了整点性能提高1 9 9 4 ,浮点性能提高5 3 4 4 的效果。 关键词:龙芯处理器,q e 删虚拟机,二进制翻译,寄存器映射,非对齐访存,多媒体指令 o p t i m i z a t i o no f v i r t u a lm a c h i n eb a s e do ng o d s o nc p u o p t i m i z a t i o no fv i r t u a lm a c h i n eb a s e do n g o d s o nc p u c a is o n g s o n g ( c o m p u t e ra p p f i e dt e c h n o l o g y ) d i r e c t e db yw a n gj i a na n dl i uj i n g a n g t h eg o d s o ns e r i e so fc p ua r et h ef i r s ts e l f - d e s i g n e dh i g hp e r f o r m a n c e ,g e n e r a l - p u r p o s e d m i c r o p r o c e s s o r si nc h i n a ,w h i c hi m p l e m e n tm i p s 6 4i n s t r u c t i o n s e ta n ds e v e r a l s p e c i a l i n s t r u c t i o n s i ta c h i e v e sh i 【g h p e r f o r m a n c ee v e nu n d e rl o wf r e q u e n c yb yu s i n ga d v a n c e d a r c h i t e c t u r ed e s i g n ,a n dh a sb e c o m eo n eo ft h ea d v a n c e ds u p e r s c a l a rp r o c e s s o r si nt h ew o r l d a t p r e s e n t ,t h em o s tp o p u l a ra r c h i t e c t u r eo fs e r v i c em a c h i n ei sx 8 6 ,m o s td e s k t o pa p p l i c a t i o n sa n d a p p l i e ds o f t w a r ea r eb a s e do nx 8 6 ,b u tt h eg o d s o nc p ui sb a s eo nm i p s i no r d e rt o 册 a p p l i c a t i o n so fs e r v i c em a c h i n eo ng o d s o nc p u ,i ti st h em a j o rt a s kt ob ec o m p a t i b l e 谢t ht h e x 8 6a r c h i t e c t u r e ;a l s o ,t h e r ea r em o r ea n dm o r ev a r i e t i e so fa p p l i c a t i o n sb a s e do nx 8 6 a r c h i t e c t u r e ,m a n yb u s i n e s ss o f t w a r ea r eb a s e do nx 8 6a r c h i t e c t u r e ,i no r d e rt or u nv a r i e t i e so f a p p l i c a t i o n s ,i tn e e d st ob ec o m p a t i b l e 诵t hx 8 6a r c h i t e c t u r e a tp r e s e n t ,t h e r ea r em a n yv i r t u a lm a c h i n e so fo l ) i is o u r c e ,w h i c hc a ni m p l e m e n tt h e t r a n s l a t i o nf r o mm i p st ox 8 6 q e m uv i r t u a lm a c h i n ei so n eo ft h e m ,w h i c hh a st w ow o r k i n g m o d e s :s y s t e ma n dp r o c e s s ,a n di tc a nt r a n s f o r mm a n yp l a t f o r m sf r o mo n et oa n o t h e r t h e r ea r e m a n ym e r i t so fm u l t i - p l a t f o r m s ,h i g he f f i c i e n c yo ft r a n s l a t i o n ,o p e ns o u r c e sa n ds oo n ,s ow e c h o i c et h eq e m ua st h ep r o c e s s i n gv i r t u a lm a c h i n eo nt h eg o d s o nc p u ,t oa t t a i nt h ea i m so f b e i n gc o m p a t i b l e 、历t l lx 8 6a p p l i c a t i o n s b e c a u s eo ft h et r a n s l a t i o no n l yb a s e do nt h es o f t w a r e ,t h er u n n i n gs p e e do ft h ep r o g r a m sh a s b e c o m et h ek e ye l e m e n t s oi m p l e m e n t i n gt h ev i r t u a lm a c h i n eo n l yb a s e do ns o f t w a r ei sh a r dt o s a t i s f yp e o p l e ,i ti st h ek e ym a s kt oa c c e l e r a t et h ev i r t u a lm a c h i n e t h e r eh a v eb e i n gm a n y h a r d w a r es u p p o r t st oi m p r o v et h ep e r f o r m a n c eo ft h ev i r t u a lm a c h i n ei nt h es p e c i f i c a t i o n so ft h e g o d s o ni i i ,b u tt h eo p t i m i z a t i o no ft h es o f t w a r ei sa l s oi m p o r t a n t t h i sp a p e rd e s c r i b e st h e o p t i m i z a t i o no ft h eq e m us o f t w a r e t h eo p t i m i z a t i o nc o n t a i n sf o u ra s p e c t s :t h em a p p i n go f r e g i s t e r s ,n o - a l i g na c c e s s i n gm e m o r ya n dm m x i n s t r u c t i o n s o nt h ep l a t f o r mo fg o d s o n2 fa n d g o d s o n3f p g a ,诵t l lt h es p e c 2 0 0 0 ,t h ee x p e r i m e n tr e s u l t ss h o wt h a tw eg e t1 9 9 4 i m p r o v e m e n to ns p e c 2 0 0 0 i n ta n d5 3 4 4 i m p r o v e m e n to ns p e c 2 0 0 0 f p k e y w o r d s :g o d s o nc p u ,q e m uv i r t u a lm a c h i n e ,b i n a r yt r a n s l a t i o n ,m a p p i n go fr e g i s t e r s , n o - a l i g na c c e s s i n gm e m o r y , m m xi n s t r u c t i o n s 2 图目录 图目录 图1 1 虚拟机的实现需求1 图1 2 进程级虚拟机结构2 图1 3 不同i s a 程序的运行3 图1 4 高级语言层次虚拟机3 图1 5 系统级虚拟机结构。4 图1 6 多客户操作系统共享硬件环境5 图1 7 实现不同i s a 操作系统移植的虚拟机5 图4 1 x 8 7f p u 的浮点寄存器栈2 3 图6 1 通用寄存器优化前后s p e c 2 0 0 0 i n t 的效率比较3 5 图6 2 通用寄存器优化后s p e c 2 0 0 0 i n t 性能提高的百分比3 6 图6 3 浮点寄存器优化前后s p e c 2 0 0 0 f p 的效率比较3 7 图6 4 浮点寄存器优化后s p e c 2 0 0 0 f p 性能提高的百分比3 8 图6 5 非对齐访存优化前后s p e c 2 0 0 0 i n t 的效率比较。3 9 图6 6 非对齐访存优化后s p e c 2 0 0 0 i n t 性能提高的百分比。3 9 图6 7 非对齐访存优化前后s p e c 2 0 0 0 f p 的效率比较4 0 图6 8 非对齐访存优化后s p e c 2 0 0 0 f p 性能提高的百分比4 0 图6 9 优化前后s p e c 2 0 0 0 i n t 效率比较4 2 图6 1 0 优化前后s p e c 2 0 0 0 f p 效率比较4 2 图6 1 l 优化后s p e c 2 0 0 0 i n t 性能提高百分比4 3 图6 1 2 优化后s p e c 2 0 0 0 f p 性能提高百分比4 3 5 表目录 表目录 表1 1c o - d e s i g n e d 虚拟机种类7 表3 1s p e c 2 0 0 0 i n t 通用寄存器指令所占比例1 6 表3 2x 8 6 操作系统启动过程通用寄存器访问次数。1 7 表4 1 龙芯3 号处理器核浮点栈相关指令。2 3 表4 2 龙芯处理器定点非对齐访存指令2 5 表4 3 龙芯处理器浮点非对齐访存指令2 5 表6 1 浮点寄存器优化前后各程序性能对比3 6 表6 2 非对齐访存优化前后纯访存程序性能对比一3 8 表6 3 多媒体指令优化前后各程序翻译总数比较。4 l 表6 4 多媒体优化部分测试结果4 l 6 首都师范大学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究 工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或 集体已经发表或撰写过的作品成果。对本文的研究做出重要贡献的个人和集体, 均已在文中以明确方式标明。本人完全意识到本声明的法律结果由本人承担。 靴做储鹳:黼 日期柝娟妇 首都师范大学位论文授权使用声明 本人完全了解首都师范大学有关保留、使用学位论文的规定,学校有权保留 学位论文并向国家主管部门或其指定机构送交论文的电子版和纸质版。有权将学 位论文用于非赢利目的的少量复制并允许论文进入学校图书馆被查阅。有权将学 位论文的内容编入有关数据库进行检索。有权将学位论文的标题和摘要汇编出 版。保密的学位论文在解密后适用本规定。 学位论文作者签名: f l e a :湃明珀 引言 第1 章引言 虚拟机是上个世纪6 0 年代提出的概念,最初提出的虚拟机实际上是虚拟化的概念,虚 拟化是为了能让不同的用户分享一台计算机的资源,最终结果是在单一的硬件系统上模拟出 多台虚拟计算机。当时主流计算机是大型机,通过把大型机分割成多个虚拟机,多种不同应 用或者多个用户可以共享这一稀缺资源。现代应用程序都会觉得它们占用了整个c p u 和全 部的内存空间,实际上它们是在一个虚拟的环境中享受着操作系统提供的各种服务。虚拟机 是计算机软件和硬件的一个虚拟的中间层,用来给上层的应用或者操作系统提供一个所需要 的虚拟软件硬件平台。如图1 1 所示: 图1 1 虚拟机的实现需求 最近几年,虚拟机中引入了二进制翻译的概念,二进制翻译是一种在相同或者不同指令 集二进制代码之间进行转化的技术,从而虚拟机重新成为学术界和工业界的焦点。实现不同 系统的迁移 4 - 5 虚拟机中二进制翻译实现主要有两种方法:解释执行和翻译执行。解释执 行就是单条指令的解释,每次解释一条目标指令代码为本地指令代码,然后执行这条指令, 这样一条一条指令的执行完所有程序;翻译执行分为静态二进制翻译和动态二进制翻译8 1 两种。其中静态二进制翻译是一种对静态的二进制可执行文件机械地翻译成另外一种指令集 文件的过程,早期主要用于二进制级别的程序迁移,由于存在不能很好的模拟虚拟地址、不 能处理自修改代码等问题,应用得到了一定的限制。动态二进制翻译技术应运而生,克服了 这些缺点。它是一种动态的、实时的把一种指令集的二进制代码翻译成另外种二进制代码。 动态二进制翻译技术按照指令块进行翻译,翻译好的指令块存入t r a n s l a t i o nc a c h e ( t b ) 中,以后每执行到这段代码时就至i j t b 中取指令,从而省去了二次翻译的过程,在指令多次重 复执行的情况下,效率相对于单条指令的解释执行有很大的提升。 首都师范大学硕士学位论文基于龙:签处理器进程级虚拟机的优化 1 1 虚拟机分类 随着软硬件技术的发展,虚拟机逐渐发展并分化成为进程级虚拟机和系统级虚拟机两 大类,在这两大类中又有高层次虚拟机、c o - d e s i g n 虚拟机等分支9 1 。进程级虚拟机提供a b i 级的支持,包括用户指令及运行环境( u s r ) 和系统调用( s y s c a l l ) ;系统级虚拟机支持完 整的i s a ,包括用户指令及运行环境( u s r ) 和特权指令及运行环境( p r v ) 。 1 1 1 进程级虚拟机 ,一 g u e s t r e g s 3 2 分别表示了p o w e r p c 中3 2 个寄存器的值,t 0 作为临时寄 存器,保存中间结果,翻译器中引入了t o ,t 1 和t 2 三个临时寄存器,分别映射到x 8 6 的真 实寄存器上,这样在传递中间结果的过程中,就可以大大节省翻译的时间。另外,在指令中 有立即数的情况下,立即数统一由o p _ p a r a m 表示,它的值在执行过程中确定并传递。 将目标指令表示成中间代码后,再由代码生成器将这些微操作根据指令流链接成为无缝 的代码,链接过程如下: i 1 f o r ( :) s w it c h ( 木o p c p t r + + ) 1 c a s ei n d e x _ o p _ m o v j o _ r l : e x t e r nv o i do p _ m o v j o _ r lt ) : m e m c p y ( g e n _ c o d e y t r , ( c h a r 宰) o h o v l j o - r 1 + o 。3 ) : g e n _ c o d e _ p t r + = 3 : b r e a k ; c a s ei n d e x _ o p _ a d d 一勉i m : 1 2 q e m u 系统架构简介 l o n gp a r a m l ; e x t e r nv o i do p _ a d d l t o i mo ; m e m c p y ( g e nc o d e _ p t r , ( c h a r , 乒) & o p _ a d d l 一2 0 一i r a + o , 6 ) : p a r a m l = * o p p a r a m _ p t r + + ; 丰( u i n t 3 2t 宰) ( g e n _ c o d e _ p t r + 2 ) = p a r a m l ; g e n _ c o d e _ p t r + = 6 : b r e a k ; l 1 t 1 代码生成器根据微操作流的指令顺序( 由o p c _ p t r 指针索引) 生成宿主机代码,主要过 程就是按指令顺序将每一个微操作复制到内存中的某个区域中,宿主机代码由g e n _ c o d ep t r 指针索引。在复制过程中,当遇到指令中用_ _ o p _ p a r a m 所表示的立即数时,用o p p a r a m _ p t r 指针索引立即数,在执行过程中确定后,再送入相应指令的域中,从而实现操作数在执行过 程中确定。生成的宿主机代码经过本地编译器编译成本地机器码后执行。 总之q e 删以基本块为单位进行翻译,但是在翻译基本块的过程中又只是采用逐条翻译 指令的方法。q e 删是以基本块为单位进行翻译的,所以它也只能精确到基本块,比如说对 于p c 寄存器,q e 删并不是每执行完一条源机器指令就更新p c ,而是在基本块结束的时候才 更新p c ,这可以节省很多不必要的开销。通过上面的做法q e 删可以避免函数的调用的开销, 做到微操作的无缝连接。 但是q e 删的翻译单元依旧是一条条指令,源机器的指令被分解成若干个微操作,通常 这些微操作都是由简单的c 语句组成,宿主机的编译器对这些微操作分别编译,优化的空间 非常狭小。这使得翻译生成的代码效率非常低下。 q e m u 的实现从a r m 到x 8 6 的翻译的时候,需要5 8 左右的代码膨胀率。代码膨胀率是 二进制翻译系统中1 f 常重要的性能指标,a r m 到x 8 6 的翻译属于r i s c 到c i s c 系统的翻译, x 8 6 的代码密度要远远大于a r m 的代码密度,从理论上说从a r m 到x 8 6 翻译的代码膨胀率应 该控制在1 以下。然而q 删却需要5 8 左右。当然q e 删的代码膨胀率居高不下还有其他原 因,但是把单条指令作为最小的翻译单位是最为重要的因素。 1 3 首都师范大学硕十学位论文基于龙芯处理器进程级虚拟机的优化 2 3q e m u 模拟器运行过程中的问题 q e m u 模拟器运行在用户级方式时,需要解决如下的一系列问题: 1 、翻译代码块和翻译代码c a c h e q e m u 遇到目标代码段时,将其翻译成本地代码,这个翻译是以代码块( t b ) 为单位的, 直到遇到目标代码跳转或分支指令时,t b 结束,因为跳转或分支指令会改变c p u 的静态状 态,翻译器每进入到一个t b 时都要明确当时的c p u 静态状态,比如当时的p c ,c p u 所处的 保护等级等信息。 一个t b 生成后,保存到1 6 m b 的翻译代码c a c h e 中,下次执行到相同的代码时,就直 接从翻译代码c a c h e 中取出t b 并执行,当翻译代码c a c h e 满时,全部清空。 2 、寄存器分配 q e m u 采用固定寄存器分配方法,这种方法将目标机的寄存器| 矧定地映射到本机相应的 寄存器或者内存中的某个地址。q e m u 对于大部分的本地机,它只是将临时变量保存在本地 机器的三个寄存器中,其它大部分的目标寄存器映射到内存中,临时变量对于不同的本地机 器分配到不同的寄存器中。这种方法的优点是简便并且可移植性好。但是这样做的性能开销 太大,由于在本机是用内存模拟的目标寄存器,当用到目标寄存器时,就会出现大量的访存 操作,这样势必会降低虚拟机的效率。一种可行的做法是对于某种特定结构,尽可能地将目 标机程序最常用的寄存器l 司定映射到本地机器的寄存器中,这样寄存器操作时的多余访存就 可以避免。这是一种牺牲虚拟机的灵活性,而达到提高性能的方法。 3 、标志位处理的优化 q e m u 中采用l a z y 的标志位处理技术:它并不是在每条涉及标志位指令执行后都计算标 志位,而是把这条指令的一个操作数,结果位置和操作类型分别存入变量c cs r c 、c c _ d s t 和c c _ o p 中,这样就可以用这三个变量恢复这条指令的执行。当需要用到标志位时,再通过 这三个变量恢复相应的指令,执行该条指令,并计算所涉及的标志位,存入e f l a g s 寄存器 中( x 8 6 架构) 。这种做法使得虚拟机不需要在每条产生标志位的指令后都计算标志位,而 是在需要使用它的时候再计算,这样大大降低了标志位的计算频率,去掉了很多不必要的计 算,从而提高了虚拟机的执行效率。 在这种做法的基础上,我们做进一步的优化。虽然不需要在每条产生标志位指令后计 算标志位,但是每条产生标志位指令后我们需要把这条指令的一个操作数,结果位置和操作 类型分别存入变量c c _ s r c 、c c _ d s t 和c c _ o p 中,每执行到这里的时候就要存入一次,这样 1 4 q e m u 系统架构简介 就增加了大量不必要的访存操作,势必对性能产生影响。为了尽可能降低这种访存操作的数 量,我们利用虚拟机的一个t b ( t r a n s l a t i o nc a c h eb l o c k ) 代码是一次性全部产生的特性。 当翻译之后的t b 代码产生后,对这段代码同溯,对于每条需要赋值c c _ _ s r c 、c c _ d s t 和c c _ o p 的指令,检查在该t b 中后面的代码是否需要恢复这条指令( 使用标志位) 。如果需要恢复, 则保留赋值;否则就删掉该赋值。在t b 的结尾默认需要使用标志位的值。 这样只在,r b 产生时进行一次回溯,删去不必要的变量赋值,以后每次调用该t b 执行 时就可以避免这些不必要的访存操作,使标志位的处理效率再次提高。 4 、t b 的直接链接 当一个t b 执行完成之后,q e 姗利用代码的p c 和c p u 状态的其他信息查找哈希表, 以寻找下一个应被执行的t b ,找到后,如果该t b 已经在翻译代码c a c h e 中,则转入t b 寅 接执行,否则重新翻译执行。 为了能够加快t b 之间查找的过程,可以利用已知的p c 直接链接到下一个需要执行的 t b 上,这样:常省翻译和执行的时间。 5 、系统调用的处理 q e m u 运行在用户级时,当遇到用户进程需要系统调用,就将目标进程的系统调用转换 成本地操作系统的系统调用,从而嵌入本地操作系统的核心态执行。这种处理方式中间需要 经过几层转换,从而影响了执行效率,有一定的优化空间。 由于以上问题,在龙芯处理器上运行q e m u 用户级虚拟机时,存在较大的优化空间,针 对龙芯处理器的特定结构提升翻译的效率以及执行时的性能。 1 5 首都师范大学硕士学位论文基于龙芯处理器进程级虚拟机的优化 第3 章龙芯处理器支持虚拟机的性能分析 m i p s 架构上兼容x 8 6 虚拟机的效率主要是由m i p s 和x 8 6 指令集之间的相似性决定的。 但是由于有例如e f l a g s 标志位、8 0 位浮点操作、浮点栈环境、段寻址模式、串操作等x 8 6 架构的特征在m i p s 上并没有,仅仅依靠软件来模拟这些特征,有时候一条x 8 6 指令翻译得 到的m i p s 指令有几十条之多,这必然影响了虚拟机的效率。 本章从寄存器映射、非对齐访存、多媒体指令的翻译的处理几方面对龙芯处理器支持 虚拟机进行性能分析,以寻求提高虚拟机性能的优化点。 3 1 寄存器映射 寄存器环境作为用户程序执行的基本环境,对性能有着非常重要的影响,本小节从通用 寄存器和浮点寄存器两方面来分析用户程序对寄存器的使用及虚拟机对寄存器映射的处理。 3 1 1 通用寄存器映射 q e m u 采用同定寄存器分配方法,这种方法将目标机的寄存器固定地映射到本机相应的 寄存器或者内存中的某个地址。q e 删对于大部分的本地机器,它只是将临时变量保存在本 地机器的三个寄存器中,其它大部分的目标寄存器映射到内存中,临时变量对于不同的本地 机器分配到不同的寄存器中。这种方法的优点是简便并且可移植性好。但是这样做的性能开 销太大,由于在本机是用内存模拟的目标寄存器,当用到目标寄存器时,就会出现大量的访 存操作,这样势必会降低二进制翻译器的效率。 以s p e c 2 0 0 0 的整点测试程序s e p c 2 0 0 0 i n t 为例,对s p e c 2 0 0 0 i n t 运行过程核心循环的 指令总数以及其中通片j 寄存器指令数目进行统计,如表3 1 所示,以获得通用寄存器指令所 占的比例。 表3 1s p e c 2 0 0 0 i n t 通用寄存器指令所占比例 愿溺霪襟嬲黝删罐凌溪餮黝嬲呷。键瀚鬻箨饔箨饔鞠攀爹鬻鳓鬻黼戮鞠弼 敏貔疆l 袭鞋蠡筑矗籀自蕊渤蕊i 磊l 池翰;珑;荔罐f& 女崭磊蠡酝函磊耐瞎赫街赫妊磊鳞施彘磊螽矗籀鹾矗羹纛糕锄物泷磊锄翰谶缓龇菇茏惫缝k 勉缀毖磁_ 1 6 4 g z i p 4 7 2 7 9 2 2 0 3l4 1 4 1 0 7 7 l1 38 7 5 8 7 1 0 2 5 2 6 45 1 2 2 9 9 2 77 2 1 2 1 8 1 m c f 1 6 龙芯处理器支持虚拟机的性能分析 3 61 4 8 0 6 5 7 33 2 6 3 1 9 8 7 0 99 0 2 7 1 8 6 c r a f t y 9 7 3 9 1 9 3 8 3 8 3 8 0 4 7 2 7 98 6 0 5 1 9 7 p a r s e r 2 5 4 g a p 6 0 5 5 2 3 6 1 94 9 5 5 6 5 0 4 98 1 8 4 3 2 0 3 8 1 3 3 3 92 6 0 7 3 5 1 1 8 58 1 3 8 2 5 5 v o r t e x 2 5 6 b z i p 2 l3 5 9 7 9 4 2 8 6l l o l l 5 1 6 1 08 0 9 8 3 0 0 t w o l f 7 4 9 7 7 3 9 8 46 6 9 5 6 9 3 6 68 9 3 0 由上述结果可以看出,在s p e c 2 0 0 0 整点测试中,每一个测试程序通用寄存器指令的数 目占了很大的比例,占比例最大的程序是1 8 6 c r a f t y ,达到了9 0 2 7 。因此,为了提高程 序的性能,对q e m u 中通用寄存器的映射机制进行优化非常必要。 x 8 6 共有八个通用寄存器,分别为e a x 、e b x 、e c x 、e d x 、e s i 、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 架构下操作系 统启动过程对这八个通用寄存器的访问次数及其所占百分比,如表3 2 所示: 表3 2x 8 6 操作系统启动过程通用寄存器访问次数 黝删 嚣粥孵糍貉嬲獭蚴豺泐 弼孝缀彩i 搿,御嬲獗移缈懒嬲磺缨鼢搿搿彩澎势鬟冀麴 锄l 戮锄缴磁籀缓施k 燃瘟。巍鏖愿貔础溅锄乞施黝勰;蕤簇鬟磁蹴。盔 e a x2 5 8 3 7 92 6 7 e b x 9 4 1 1 8 9 7 e c x7 6 5 1 77 9 e d x1 0 9 3 0 51 1 3 e b p1 2 5 5 9 01 3 0 e s i8 0 1 3 28 3 e d i8 3 4 9 38 6 e s p1 3 9 8 0 21 4 5 由上述结果可以得到操作系统在x 8 6 架构运行时最常用的通用寄存器是e a x 、e s p 、e b p 这三个。因此虚拟机最好可以将x 8 6 所有的通用寄存器与m i p s 的通用寄存器进行一对一的 映射,至少对x 8 6 架构上用户程序运行时最常用的e a x 、e s p 、e b p 这三个寄存器进行一对一 映射。 3 1 2 浮点寄存器映射 x 8 6 架构中浮点寄存器环境和m i p s 浮点寄存器环境有着很大的不同。在x 8 6 架构中, 浮点寄存器是以浮点寄存器栈的方式来组织的。x 8 7f p u 指令以栈的方式来使用八个x 8 7f p u 1 7 首都师范大学硕上学位论文基于龙芯处理器进程级虚拟机的优化 寄存器。在x 8 7f p u 控制寄存器中的t o p 域中保存有浮点寄存器栈顶指针,在运行过程中, 相对浮点寄存器号和栈顶指针相加得到绝对寄存器号,栈项指针t o p 值加一或者减一完成出 栈或者入栈的操作,并且该栈由t o p 指针控制为循环栈。而在m i p s 中浮点寄存器只是作为 单独的寄存器而存在。由于两者在寄存器组织方式上的不同,虚拟机在翻译x 8 6 的浮点指令 时也必然有很大的开销。例如,如下的x 8 6 指令段: m o y o x d c ( r s p ) ,e b p f l d z f l d l6 2 2 4 2 1 ( r i p ) t e s t o o e b p , e b p f c m o v e s t ( 1 ) s t 奔t ps t 1 ) 扣l p lo x l 8 ( r s p ) 经过q e m u 翻译后得到的m i p s 指令如下: n o p l w u s s , 2 2 0 ( t 4 ) m t c l z e r o , $ f 4 c v t d ws f 4 , s f 4 l u i a o , 0 x 5 9 o r ia o , a o , o x 6 5 0 0 l d c l s f l6 , 0 ( a o ) a n d a l ,s s , s 5 d s l l 3 2s 4 , a 1 o x o s l t i u s 4 s 4 i d s l l s 4 , s 4 , o x 6 a n d i s o , s o , o x f f b f o rs o s o s 4 a n d is 8 s o o x 4 0 m o v d $ f l s , s 归6 b e q z s 8 , 0 x 6 2 0 6 8 c 9 4 n o p m o v d s f l & s f 4 s d c l s f l 8 , 2 4 ( t 4 ) 由于x 8 6 和m i p s 的浮点寄存器之间组织方式之间存在很大的差别,在上述翻译的代码 中并没有浮点栈的状态信息,虚拟机必须在运行过程中实时更新栈的状态信息,这无疑又增 加了很多冗余代码,所以导致虚拟机必须使用几倍甚至几十倍的代码米翻译目标指令,这就 造成了巨大的代码膨胀。单从这一点考虑就急需优化。另外,由于代码膨胀,也就必然导致 了虚拟机上执行的程序性能低下。 1 8 龙芯处理器支持虚拟机的性能分析 3 2 非对齐访存 因为x 8 6 访存指令没有对齐或者非对齐的区分,因此q e 删为了使代码更加简洁和通用, 在访存操作的底层调用一套统一的访存函数。该访存函数为了兼顾平台的通用性,访存时都 是按字节进行的,并用移位操作来完成访存操作。这种做法兼顾了系统的通用性而牺牲了访 存的性能。例如,目标x 8 6 机器的按字访问由以下函数实现: s t a t i ci n l i n ei n t d _ e _ p ( v o i d 却t r ) # i f d e f _ _ p o w e r p c _ _ _ i n tv a l ; a s 氇一v o l a t i l e _ _ ( 1 w b r xg o , o 。l 。:4 = r 4 ( v a l ) :。r 。i p t r ) ) : e t u t nv a l : # e l s e u i n t 8t 卑p = p t r : t e t u t np 【o ) | ( p 【1 1 8 ) | ( p l 2 1 1 6 ) | ( p t 3 1 ( 2 4 ) : # e n d i f 通过这种翻译机制,一条x 8 6 实现l o a d 的访存指令: m o v o f f s e t ( b a s e ) $ g e a x 需要由如下的一段指令来翻译: l b u v l , 1 ( s 2 ) l b u a 2 。o ( s 2 ) l b u a o , 2 ( s 2 ) s l lv l , v l , o x 8 l b ua l , 3 ( s 2 ) 0 1 a z , a z , v l s l la o , a o , 0 x 1 0 o ra 2 , 识a o s j l a l , a l , 0 x 1 8 这种做法是把任何的访存指令拆分成按字节的访存,然后再利用移位操作来完成操作, 这样做具有很好的平台通用性,但是牺牲了效率。冈此使用龙芯的非对齐访存指令来直接实 现,应该具有很大的优化空间。 3 3 多媒体指令的翻译 多媒体技术是i n t e l 公司在处理器中为增强处理器的媒体处理能力而引入的一项技术, 分为m m x 、s s e 、s s e 2 和s s e 3 四类。 1 9 首都师范大学硕士学位论文甚于龙:吝处理器进程级虚拟机的优化 m m x 技术是i n t e l 公司在奔腾i i 的i a - 3 2 架构中引入的,它实现了单指令流多数据流 ( s i m d ) ,增强了媒体处理的性能。m m x 指令操作的数据类型是6 4 位的p a c k e d 整型数据, 分为三种类型:6 4 位的p a c k e d 字节整型、6 4 位的p a c k e d 字整型和6 4 位的双字整型,即 使用m m x 技术可处理的数据基本单位可以是字节( b y t e ) 、字( w o r d ) ,或者是双字 ( d o u b l e - w o r d ) 。为此引入了8 个新的删x 寄存器删o 一删7 ,用于存放删指令的操作数, 这8 个寄存器同浮点栈映射到相同的物理寄存器,由浮点状态寄存器控制使用。共引入4 7 条姗x 指令共分为八类:数据传输、算术运算、比较、转换、u n p a c k i n g 、逻辑运算、移位 和清空删x 状态寄存器。 s s e 在奔腾三的i a - 3 2 架构中引入,是对s i m d 的扩展,这些扩展增强了处理器对高级 二维三维图形和图像、运动视频等方面的处理能力。s s e 扩展的指令操作数可以是和删x 指 令相同的p a c k e d 整型数据,也新引入了p a c k e d 的单精度浮点数,四个单精度的浮点数组成 一个1 2 8 的p a c k e d 数据类型。3 2 位模式下引入8 个1 2 8 位的x m m 寄存器( 6 4 位模式下引入 1 6 个1 2 8 位的x m m 寄存器) ,用以存放s e e 扩展指令的操作数;同时s s e 也在m m x 指令的基 础上扩展了对p a c k e d 整型数据的操作,使操作更加灵活,这些操作都是在m m ) ( 寄存器上进 行操作。 s s e 2 和s s e 3 在s s e 和m m ) ( 指令的基础上作了扩展,操作数使用删x 或x m m 寄存器,这 些扩展使操作更加灵活丰富。 由于m i p 8 指令集中并没有这些相应的多媒体指令,q e m u 虚拟机中对于媒体处理部分是 软件模拟,每条x 8 6 的媒体指令都是用一个相应的函数来实现,一条指令经过翻译后会变成 很多条指令,这样就必然会影响虚拟机的效率。这种做法是一种通用的做法,扩展性好,可 以适片j 于x 8 6 架构到其它多种架构的翻泽,但是它是以牺牲性能为代价的。例如,如下的 x 8 6 多媒体指令: p u n p c k l w dm m o , m m l 该指令实现将m m x 寄存器0 和1 中的数据按一定顺序进行拼接,结果存放在m m x 寄存器0 中。 优化前,二进制翻译器仅靠软件的方法翻泽为以下一段代码: s w $ o 2 4 4 ( $ 1 9 ) 洲$ o , 2 5 6 ( $ 1 9 ) s w $ o 2 6 0 ( $ l9 ) l u i$ 6 o x o 龙芯处理器支持虚拟机的性能分析 o h $ 6 s 6 o x l 0 8 a d d u$ 6 $ 6 $ i9 l h u $ 2 o $ 6 ) a d d i u$ l o $ l o 1 6 s h $ 2 8 $ l o ) l u i $ 5 o x o o r i $ 5 $ 5 o x l l o 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 s 6 ) 1 w $ 2 8 ( $ l o ) s h $ 3 1 2 ( $ l o ) l h u $ 4 2 ( $ 5 n o p s h $ 4 1 4 $ l o ) 1 w $ 3 1 2 ( $ 1 0 ) a d d i u $ l o $ l o 1 6 s w $ 2 o ( $ 6 ) s w $ 3 。4 $ 6 ) 由于仅靠软件翻译,所以一条x 8 6 指令翻译后产生2 5 条m i p s 代码,翻译效率比较低; 这种代码膨胀率显然是不可以容忍的。因此在虚拟机的多媒体指令处理器处理部分也存在较 大的优化空间。 2 l 首都师范大学硕上学位论文基于龙芯处理器进程级虚拟机的优化 第4 章龙芯处理器加速二进制翻译的硬件 支持又忖 根据第三章的分析,由于m i p s 和x 8 6 指令集之间的语义差距n 1 ,仅依靠虚拟机软件的 模拟不能够带来性能上足够的改善,

温馨提示

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

评论

0/150

提交评论