(计算机系统结构专业论文)龙芯2号多媒体指令集在mpeg2视频解码中的应用.pdf_第1页
(计算机系统结构专业论文)龙芯2号多媒体指令集在mpeg2视频解码中的应用.pdf_第2页
(计算机系统结构专业论文)龙芯2号多媒体指令集在mpeg2视频解码中的应用.pdf_第3页
(计算机系统结构专业论文)龙芯2号多媒体指令集在mpeg2视频解码中的应用.pdf_第4页
(计算机系统结构专业论文)龙芯2号多媒体指令集在mpeg2视频解码中的应用.pdf_第5页
已阅读5页,还剩52页未读 继续免费阅读

(计算机系统结构专业论文)龙芯2号多媒体指令集在mpeg2视频解码中的应用.pdf.pdf 免费下载

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

文档简介

摘要 m p e g - 2 视频播放器是龙芯系列处理器的重要应用之一。在龙芯2 号的早期 版本中,h p e g - 2 视频播放的速度不甚理想,提高龙芯2 号的m p e g 一2 视频播放性 能具有十分重要的意义。为了支持多媒体应用加速,龙芯2 号在随后版本中加入 了一个6 4 位的s i m d 定点多媒体指令集。 m p e g - 2 视频播放可大致分为视频解码以及显示两部分。而m p e g 一2 视频解码 过程主要包括可变长解码、反扫描、反量化、i d c t 和运动补偿等子过程。在龙 芯2 号上,未进行多媒体优化时,m p e g - 2 视频解码时间占总播放时间的7 0 左右, 而i d c t 和运动补偿的时间占总解码时间的8 5 左右。 本文以一个m p e g 一2 解码器为例,首先对该解码器进行静态程序分析,接着 通过对m p e g - 2 视频解码在龙芯2 号上的动态运行过程分析,找出该解码器的核 心函数,并进一步分析这些核心函数在龙芯2 号上的潜在数据并行性,最后在龙 芯2 号上,结合体系结构的特点,具体实现对这些核心函数的多媒体优化,最终 使这些核心函数在视频播放整体应用中的平均加速比达到2 0 ,而m p e g 一2 视频 播放的整体加速比为1 4 一l _ 6 倍。 关键词:龙芯2 号多媒体指令集;i d c t ;运动补偿;m p e g 一2 视频解码 o p t i m i z a t i o no f am p e g - 2v i d e od e c o d e r u s i n g t h em u l t i m e d i ai n s t r u c t i o ns e t o fg o d s o n - 2 z h a n gy i w e i ( c o m p u t e ra r c h i t e c t u r e ) d i r e c t e db y t a n gz h i m i n m p e g - 2v i d e op l a y b a c ki so n eo ft h ep o t e n t i a lt a r g e ta p p l i c a t i o n sf o rg o d s o n m i c r o p r o c e s s o rs e r i e s e a r l yv e r s i o n so fg o d s o n - 2a r en o tq u i t eg o o da tt h i st a s k i m p r o v i n gm p e g - 2v i d e op l a y b a c kp e r f o r m a n c ei sv e r yi m p o r t a n tf o rb o t hc u r r e n t a n df u t u r eg o d s o n b a s e dp l a t f o r m s n e w e rv e r s i o n so fg o d s o n 2a d dm u l t i m e d i a i n s t r u c t i o ns e te x t e n s i o nt oa c c e l e r a t em u l t i m e d i a a p p l i c a t i o n s m p e g 一2v i d e o p l a y b a c k i n c l u d e sv i d e od e c o d i n ga n d d i s p l a y i n g m p e g - 2v i d e o d e c o d i n gc o m p o s e so fs u b p r o c e d u r e ss u c h a sv a r i a b l e - l e n g t hc o d e ( v l c ) ,a n t i s c a n , a n t i q u a n t i f y , i d c ta n dm o t i o nc o m p e n s a t i o n ,o ng o d s o n 一2p l a t f o r m ,t h em p e g - 2 v i d e od e c o d i n g ,w i t h o u ta n ym u l t i m e d i ao p t i m i z a t i o n ,o c c u p i e sa b o u t7 0p e r c e n to f t o t a l p l a y b a c kt i m e ,a tt h e s a m et i m ei d c ta n dm o t i o n c o m p e n s a t i o nt o g e t h e r o c c u p ya b o u t8 5p e r c e n to f t o t a ld e c o d i n g t i m e t h i sp a p e rt a k e sa l lm p e g 一2d e c o d e ra s e x a m p l et o s h o wt h ep e r f o r m a n c e i m p r o v e m e n to f t h em u l t i m e d i ai n s t r u c t i o ns e t f i r s t l y , w ei d e n t i f yt h ek e r n e l so ft h a t d e c o d e rb ys t a t i c p r o g r a ma n a l y s i sa n dr u n t i m ec h a r a c t e r sa n a l y s i so ng o d s o n 一2 p l a t f o r m t h e nw ea n a l y s i s t h e s ek e r n e l si n d e t m l ,f i n do u tt h e i rp o t e n t i a ld a t a p a r a l l e l i s m ,a n dt h e ni m p l e m e n tt h eo p t i m i z e dv e r s i o nf o rg o d s o n - 2 w ea c h i e v ea s p e e d u po f2 0 f o rt h o s ek e r n e l sw h e nr u n n i n gt h e a p p l i c a t i o na n das p e e d u po f 1 4 - 1 6 f o r t h e w h o l ea p p l i c a t i o no f m p e g 一2v i d e o p l a y b a c k k e y w o r d :g o d s o n - 2m u l t i m e d i ai n s t r u c t i o ns e t ;i d c t ;m o t i o nc o m p e n s a t i o n ; m p e g - 2v i d e o d e c o d i n g i i 声明 本人声明所呈交的论文是我个人在导师指导下进行的研究工作及取得 的研究成果。就我所知,除了文中特别加以标注和致谢的地方外,论文中不 包含其他人已经发表或撰写过的研究成果。与我一同工作的同志对本研究所 做的任何贡献均已在论文中作了明确的说明并表示了谢意。 作者签名:日期: 关于论文使用授权的说明 中国科学院计算技术研究所有权处理、保留送交论文的复印件,允许论 文被查阅和借阅;并可以公布论文的全部或部分内容,可以采用影印、缩印 或其它复制手段保存该论文。 作者躲撇新签名弘_ 细期:删 址 第一章引言 从上个世纪8 0 年代开始发展到现在,多媒体这个术语已经被广泛熟知并使 用,它包括图像、图形、动画、音频、视频等各种表示计算机信息的形式。多媒 体技术就是用来处理这些形式的多媒体信息的技术,而多媒体应用是多媒体技术 的具体实现。上个世纪九十年代以来,桌面系统上的多媒体应用逐渐普及,继而 得到很大发展,成为桌面系统上一类很重要的应用。桌面系统上多媒体应用的普 及和发展,促使了多媒体指令集的产生,之后一直推动其不断改进和发展。而随 着多媒体指令集的不断改进与发展,用多媒体指令集对桌面系统上的多媒体应用 进行优化的方法也一直是研究的热点。 m p e g 一2 视频播放器是龙芯系列处理器的重要应用之一。在龙芯2 号的早期 版本中,m p e g 一2 视频播放的速度不甚理想,为此,在其后的版本中加入了多媒 体指令集。m p e g 一2 视频播放可大致分为视频解码以及显示两部分。本文以一个 m p e g 一2 解码器为例,通过分析它在龙芯2 号上潜在数据并行性,对相关部分进 行了多媒体指令集优化,并对优化后的性能进行了评测。因此,本文所做的工作 是从视频解码入手对m p e g 一2 视频播放进行优化。除此之外,还可以从显示入手 对m p e g 一2 视频播放进行优化,关于这方面的工作,可见参考文献 3 3 。 本章首先介绍多媒体及相关概念,接着回顾了多媒体指令集的发展历史,这 对龙芯2 号多媒体指令集的发展可以有所参考和借鉴,同时,因为本文采用一个 m p e g 一2 解码器作为龙芯多媒体指令集应用的例子,所以在本章最后简单介绍 m p e g 一2 的若干情况。 1 。1 多媒体简介 所谓媒体,是信息发布和表现的有形或无形的载体。顾名思义,多媒体是多 种信息发布和表现载体的组合。从上个世纪8 0 年代开始发展到现在,多媒体这个 术语已经被广泛熟知并使用。从用户的眼光看,多媒体就是用图像、图形、动画、 音频、视频等各种方式表示计算机信息。 从人类感知的角度可以把多媒体分为如下两类 参考文献3 : 1 与听觉相关的多媒体,包括声音与音频 声音是一种由物体振动引发的物理现象,并不是所有声音都能够被人类感知 的,人们把人耳能听见的声音称为音频,音频频率范围大约为2 0 h z 至2 0 k h z 。 在多媒体系统中,音频主要以音乐和或语音的形式出现。音乐是各种乐器 设备发出的声学信号,频率范围为2 0 h z 到2 0 k h z 之间。而语音是人发出的声学信 号,人的语音频率范围主要在2 0 0 h z 到4 0 0 0 h z 之间。 中国科学院硕士学位论文:龙芯2 号多媒体指令集在m p e g 2 视频解码中的应用 2 与视觉相关的多媒体,包括图像、图形、视频和动画等 从直观上看,图像是一幅可以表现一个物体、一个二维或三维场景等情景的 画面,它的内容可以是真实的也可以是虚构的。在计算机中,图像通常指视频影 像、数字图像或图片,它们总是以数字形式出现的。而图形是一幅包括直线、矩 形、圆、椭圆及用文本描述的二维或三维物体等元素的图片。 视频和计算机动画已经成为多媒体系统中的基本媒体,它们是利用人类视觉 观察运动的分辨率的特性制成的。从某种意义上来说,可以把视频看作一个随时 问变化的图像序列,而把动画看作一个随时间变化的图形序列。 综上所述,多媒体包括图像、图形、动画、音频、视频等各种表示计算机信 息的形式,多媒体技术就是用来处理这些形式的多媒体信息的技术,处理包括制 作、显示、播放、操作、压缩或解压等。而多媒体应用是多媒体技术的具体实现, 一般而言,个桌面系统上的多媒体应用包括静态图像的压缩和显示,视频、音 频的压缩和播放,语音的合成与识别,三维图形的生成,三维动画的演播等。 上个世纪九十年代以来,桌面系统上的多媒体应用逐渐普及,继而得到很大 发展,成为桌面系统上一类很重要的应用。桌面系统上多媒体应用的普及和发展, 促使了多媒体指令集的产生,之后一直推动其不断改进和发展,下面将回顾多媒 体指令集的发展历史。 1 2 多媒体指令集的发展历史 多媒体应用最初兴起的时候,p c 机和工作站主频还很低,内存也比较小,整 体性能很低,因此在这些机器上运行多媒体应用时,需要额外增加硬件来支持, 如增加视频卡和多媒体协处理器等。1 9 9 4 年,为了在h p 7 1 2 工作站能够实时软件 i p e g - 1 解码,h p 公司仔细研究了m p e g - 1 解码器并推出第一个多媒体指令集m a x - 1 参考文献l o 。自此以后,其他微处理器厂商纷纷加入这个行列。这些多媒体指 令是一类新的s i m d 指令,和传统的s i m d 在多处理器上执行同一条指令的运算方式 不同,多媒体指令是在单处理器上执行的,它把多个低精度的数据元素组合起来 装入一个相对较宽的寄存器中,并行操作这些数据元素。 从第一个多媒体指令集问世开始,迄今多媒体指令集已经有了很大发展,从 s i m d 定点指令集到s i m d 浮点指令集。到包括对多媒体应用全方位的支持。表1 1 按面世时间的先后顺序列出了各微处理器厂商推出的主要的多媒体指令集,表中 分别列出了厂商名、s i m d 指令集名及其面世时间和指令数。从中可以看出,几乎 所有的主要微处理器厂商都定义了自己的多媒体指令集。 下面将按面世时间顺序介绍多媒体指令集的发展历史。 1 9 9 4 年,h p 公司在其生产的h p ? 1 2 工作站上实现了第一个多媒体指令 2 第一章引言 集m a x 一1 参考文献l o ,该工作站采用的微处理器是8 0 m h z 、基于 p a r i s c 结构的p a 一7 1 0 0 l c 。姒x - l 包括9 条指令,是为了实现一个实 时软件m p e g 一1 ( 3 5 2 2 4 0 或者s i f 格式) 解码器而设计的,优化后的 解码器解码s i f 格式的m p e g l 视频,其速度达到了3 0 帧秒,加速比 大概为5 7 倍,效果非常明显 参考文献9 。 表1 1 微处理器多媒体扩展s i m d 指令集 厂商扩展s i m d 指令集名面世时间指令数 h pm a x 一11 9 9 49 s u nv i s1 9 9 51 2 l h pm a x 一21 9 9 58 m i p sm i p s v m i p s 6 41 9 9 62 9 m i p sm d m x1 9 9 67 4 i r i t e l删x1 9 9 75 7 d e cm v i1 9 9 71 3 a m d3 d n o w 11 9 9 72 l i n t e ls s e1 9 9 97 0 m o t o r o l aa 1 t i v e e1 9 9 91 6 2 m i p sm i p s 一3 d1 9 9 92 3 a m de n h a n c e d3 d n o w11 9 9 92 4 i n t e ls s e 22 0 0 01 4 4 * i n t e ls s e 32 0 0 21 3 * s s e 2 指令榘的1 4 4 条指令中t 有6 8 条是将原洲x s s e 的6 4 位 指令扩展为1 2 8 位 1 9 9 5 年,s u n 公司也推出了自己的v l s 指令集 参考文献1 1 ,它最早 是在u l t r a s p a r ci 处理器上实现的,以后的u l t r a s p a r ci i 、u l t r a s p a r c i i i 和u l t r a s p a r ci v 也都支持这个指令集。包含1 2 1 条指令的v i s 指 令集,其主要是针对诸如3 d 可视化和m p e g l m p e g 一2 编码等多媒体应 用设计的,它的效果也是很不错的,处理器实现v i s 指令集后,运行相 关的多媒体应用,不再需要专门的图形硬件支持。 1 9 9 5 年,h p 公司推出了基于p a r i s c 2 0 结构的p a 一8 0 0 0 处理器,实现 了h p 公司的另一个多媒体指令集m a x 一2 指令集 参考文献1 2 ,该 指令集共8 条指令,增加了一个浮点乘一累加部件,与定点乘法器相比 可节省大量芯片面积,可用来处理音频和3 d 图形中的运算,如此一来, m p e g 解码就可以用定点部件来处理视频而用浮点部件来处理音频。 中国科学院硕士学位论文:诧芯2 号多媒体指令集在m p e g 2 视频解码中的应用 1 9 9 6 年,m i p s 公司先后发布了m d m x ( 7 4 条指令) 和m i p s - v ( 和多媒 体相关的指令有2 9 条,后更名为m i p s 6 4 ) 两个多媒体指令集,其中 m d m x 参考文献2 3 是一个并行定点指令集,有一个专用的1 9 2 位累计 寄存器;而m i p s - v 参考文献1 3 针对v r m l 和o p e n g l 这类应用中的3 d 几何处理,增加了2 个并行的3 2 位单精度浮点操作,它在m i p s 6 42 0 1 ( 处理器上实现。 1 9 9 7 年,执通用微处理器产业牛耳的i n t e l 公司终于推出了它的第一 个多媒体指令集m m x 参考文献5 ,最初是在x 8 6 结构的p 5 5 奔腾处理 器上实现的。m m x 指令集共5 7 条指令,是s i m d 定点指令集。 1 9 9 7 年,原d e c 公司在a l p h a2 1 1 6 4 p c 处理器上实现了自己的多媒体 指令集m v i 参考文献1 4 ,其后的2 1 2 6 4 、2 1 2 6 4 a 以及2 1 3 6 4 处理器也 都支持它,只有1 3 条指令的m v i 的设计目标是仅仅通过软件就可 以时h 2 6 1 和h 2 6 3 视频会议达到3 0 帧秒,同时播放带立体声的d v d 可以达到3 0 帧秒。 1 9 9 8 年,在k 6 2 处理器上,a m d 公司对从i n t e l 手中购买的渤x 进行 了很重要的扩展定义了自己的指令集3 d n o w ! 参考文献1 5 ,增加 了2 个并行的3 2 位单精度浮点操作,共2 l 条指令。 1 9 9 9 年,i n t e l 公司在奔腾i i i 处理器上实现了它的第二个多媒体指令 集s s e 参考文献6 。该指令集增加了1 2 8 位成组单精度数据类型和7 0 条相关指令,是一个s i m d 浮点指令集,并根据用户的反馈意见。对愀 进行了扩展,增加了诸如求绝对值、最大值、最小值等运算。 1 9 9 9 年,m o t o r o l a 公司在m o t o r o l a7 4 0 0 ( g 4 ) 处理器上加入了a 1 t i v e c 指令集 参考文献1 6 ,1 7 ,它的指令数高达1 6 2 条,很有自己的特色, 它不仅仅可以加速多媒体处理,而且可以加速几乎全部具有潜在数据并 行性的应用。 1 9 9 9 年,m i p s 公司发布了m i p s 一3 d 参考文献2 3 ,它包含了原来附加 在m i p sv 中的a s e s 指令,2 3 条指令主要针对3 d 应用而设计,在m i p s 6 4 2 0 k 处理器中实现。 1 9 9 9 年,为了向i n t e l 公司的s s e 指令集看齐,a m d 公司推出了包含 2 4 条指令的e n h a n c e d3 d n o w ! 指令集,在a t h l o n ( 曾经被称为k 7 ) 处 理器中实现。 2 0 0 0 年,i n t e l 公司在奔腾i v 处理器中,实现了s s e 2 指令集 参考文 献7 ,该指令集增加了1 2 8 位的成组定点指令和2 个6 4 位双精度浮点 指令,共1 4 4 条指令,其中有6 8 条是把前两个s i m d 指令集中的6 4 位 4 第一章弓l 言 整数指令扩展到1 2 8 位。 2 0 0 2 年,i n t e l 公司在采用9 0 纳米技术生产的奔腾i v 系列处理器中, 实现了s s e 3 指令集,它增加了1 3 条新的指令,是为了让多媒体应用更 好地利用新的体系结构的特点( 诸如超线程) 而设计的。 龙芯系列通用微处理器虽然起步晚,但是体系结构设计采用了大量的先进技 术,在龙芯2 号中就加入了6 4 位s i m d 定点多媒体指令集,本文第二章会介绍它。 1 3 m p e g - 2 :一个数字视频和音频编码国际标准 m p e g ( m o v i n gp i c t u r ee x p e r t sg r o u p ,活动图像专家组) 是1 9 8 8 年由国际 化标准组织i s o 和国际电工委员i e c 联合成立的一个专家组,成立这个专家组的目 的主要是研究和制定数字视频和音频编码的国际标准,它于1 9 9 5 年公布了m p e g 一2 标准 参考文献1 8 ,全称为“信息技术运动图像和伴音信息的通用编码”, 目的在于支持高的图像分辨率,包括标准分辨率的数字电视和更高分辨率的高清 晰度电视,同时支持包括高速体育运动在内的活动图像。m p e g 一2 要求能够支持广 泛的应用范围,既包括存储媒体中的d v d ,广播电视中的数字广播电视和高清晰 度电视,还可应用于交互式的视频点播和非交互式的视频点播,此外还能够适配 于a i m 这种新兴的宽带通信网,码率范围为3 兆位秒至l o o s e 位秒,与m p e g 一1 兼 容。 如上所述,m p e g 一2 支持的应用范围非常广阔,可能的应用需求也非常多, 如果将这些应用需求协调成单一语法,其标准将会及其复杂。为此,m p e g 采纳 了一种称之为工具箱的折衷方法,将视频编码规范中规定的语法子集定义为类, 而每一类中包括不同的等级( 即l e v e l ,它定义了诸如画面大小和码率等参数) , 共定义了5 类、4 个等级。我们熟悉的数字视盘d v d 就采用了其中的主类主级 ( 通常写为m p s m l ) 。 1 4本论文的组织 本章给出了多媒体以及多媒体指令集的相关概念及其背景知识,该论文剩余 部分组织如下: 第二章介绍了龙芯2 号及其多媒体指令集,其中包括对龙芯2 号处理器的体系 结构特点的介绍以及对龙芯2 号多媒体指令集的指令特性和实现细节的介绍。 第三章阐述了多媒体性能的评测方法,并从一个实际评钡u c p o 多媒体性能的 例子入手,介绍了当前多媒体性能评测的多种方式,这些方式包括:m p e g 、多媒 体应用核心和多媒体工作负载等。 接下来的第四、五、六章是本文工作的重点。第四章首先简单介绍了m p e g 一2 5 中国科学院硕士学位论文:龙苍2 号多媒体指令集在m p e g 2 视频解码中的应用 视频解码过程中与分析m p e g 一2 视频解码器相关的概念,包括反向i d c t 和运动补 偿以及限幅处理等。接下来从静态程序分析的角度,分析了一个m p e g 一2 视频流 解码器m p e 9 2 d e co 4 0 ,主要包括l i b m p e 9 2 解码m p e g 一2 视频流的基本过程, 以及l i b m p e 9 2 解码m p e g 一2 视频流的基本函数。最后从该解码器在龙芯2 号上的 动态运行过程入手,详细分析了l i b m p e 9 2 解码m p e g 一2 视频流的核心函数在龙芯 2 号上动态运行结果,并分析了这些函数的主要操作及所操作的数据类型,发掘 出潜在的数据并行性,为第五章的优化工作提供依据。 第五章介绍了对视频解码过程的i d c t 变换和运动补偿以及限幅处理中的核 心函数进行多媒体优化的方法,并以l i b m p e 9 20 3 1 库为例,介绍了具体的实 现方法。 第六章对第五章阐述的优化进行性能评测和比较,测试平台是基于2 2 5 m h z 龙芯2 号c p u 的l i n u xp c 原型系统,该c p u 已加入一个6 4 位定点s i m d 多媒体指令集 ( 见第二章) 。首先对第四章中提及的1 8 个核心函数优化前后占m p e g 一2 视频播放 时间百分比进行比较,给出多媒体优化前后这些函数在整体应用中的加速比;然 后分析多媒体优化工作对m p e g 一2 视频播放整体应用性能的影响,得出m p e g 一2 视频 播放的整体加速比。 第七章对上述工作进行了总结,同时提出曰后可以进一步开展的工作。 第二章龙芯2 号及其多媒体指令集 本文的一切工作都是在龙芯2 号微处理器上完成的,它是一个兼容m i p s i i i 指令集的、通用6 4 位r i s c 结构微处理器,是一个四发射的超标量和超流水线结 构,采用了很多先进的技术来提高流水线的效率,主要包括乱序执行和先进的 c a c h e 设计等技术。 龙芯2 号多媒体指令集是龙芯系列的第一个s i m d 指令集,它共6 7 条指令, 是一个6 4 位定点s i m d 指令集,支持并行对8 个字节、4 个1 6 位数、2 个3 2 位 数或6 4 位数的定点操作。据估算,在龙芯2 一b 中实现龙芯2 号多媒体指令集占 用了不到2 的芯片面积。 2 1 龙芯2 号处理器 龙芯2 号微处理器是一个兼容m i p s i i i 指令集的、通用6 4 位r i s c 结构微处 理器。它是一个四发射的超标量和超流水线结构,基本流水级为取指、译码、寄 存器重命名、发射、执行、写回和提交,有5 个功能部件,包括2 个定点功能部 件,2 个浮点功能部件和一个访存部件,每个时钟周期可以取指并译码四条指令, 并通过指令调度,动态地将其发射到五个功能部件中。尽管指令是乱序执行的, 但是最后的提交是有序的,并且实现了精确例外处理。 龙芯2 号主要利用乱序执行技术和先进的c a c h e 设计来提高流水线的效率。 乱序执行技术包括寄存器重命名、动态调度和转移指令预测等。龙芯2 号各有 6 4 个定点和浮点物理寄存器堆,寄存器重命名将定点或浮点的3 2 个名义寄存器 映射到各自6 4 个物理寄存器,不仅可以解决读后写和写后写这两种数据相关, 而且记录了重要的信息,这些信息对于精确例外处理和跳转指令预测失败回退处 理必不可少。动态调度通过调整指令执行的次序来降低r a w ( 写后读) 数据相关造 成的暂停。龙芯2 号有1 6 项定点指令保留站和1 6 项浮点指令保留站来实现指令 乱序发射,还有一个3 2 项的r e o r d e r 队列用来保证乱序执行的指令最终可以按 程序中原有顺序有序提交。转移指令预测在跳转指令执行结果完成以前,预测转 移的方向,可以解决控制相关。为了提高转移预测的准确度,龙芯2 号设计了一 个1 6 项的b t b ,一个4 k 项的b h t ,一个9 位的g h r 和个4 项的r a s 。 2 2 龙芯2 号多媒体指令集 龙芯2 号多媒体指令集 参考文献1 9 是龙芯系列的第一个s i m d 指令集,它 共6 7 条指令,表2 1 给出了龙芯2 号的多媒体指令集。它是一个6 4 位定点s i m d 中国科学院硕士学位论文:龙芯2 号多媒体指令集在m p e g 一2 视频解码中的应用 指令集,支持对8 个字节、4 个1 6 位数、2 个3 2 位数或6 4 位数的并行定点操作。 据估算,在龙芯2 一b 中实现龙芯2 号多媒体指令集占用了不到2 的芯片面积。 表2 1 龙芯2 号多媒体指令集 运算方式 w r a p a r o u n d有!峙号饱和无符号饱和 81 63 26 481 6 3 281 63 2 指令类型 算术加 减 乘( 保留低位结果) 乘( 保留高位结果) 乘( 低位操作数) 乘加 求最大值 求最小值 求绝对值差 比较 是否相等 是否大于等于 数据 成组( p a c k ) 转换 分组( u n p a c k ) 高位 分组( u n p a c k ) 低位 数据插入 调整抽取 p m o v m a s k b 调序 8 位 1 6 位 3 2 位6 4 位 逻辑 占 p a m ) n 或非 马岛 异或 移位逻辑左移 逻辑右移 - 算术右移 第二章龙芯2 号及其多媒体指令集 龙芯2 号支持的浮点指令是兼容m i p s i i i 的,指令中包括一个5 位的f m t 域, 它只用了1 6 和1 7 两个值,因此使用f m t 域保留值可以复用已有的浮点指令,龙 芯2 号多媒体指令就是通过复用原有的浮点加、减、乘、除等指令来实现的 参 考文献1 9 。 龙芯2 号多媒体指令集定义了3 2 个6 4 位多媒体寄存器,具体实现时没有增加 新的硬件,而是映射n 3 2 个原有浮点寄存器。由于多媒体指令复用原有的浮点指 令,编程时所用寄存器就是浮点寄存器,寄存器重命名时,多媒体指令和普通浮 点指令一样来分配物理浮点寄存器,所以这种映射不需要增加任何新的状态,浮 点指令和多媒体指令混合执行时也不需要任何切换,如图2 1 所示,但是程序员 应注意不要将两类寄存器混用。多媒体指令不产生任何算术类例外。 图2 1龙芯2 号多媒体寄存器到浮点寄存器的映射 在龙芯2 号的体系结构上,一个字定义为3 2 位,一个半字定义为1 6 位,一个 双字定义为6 4 位。龙芯2 号多媒体指令集增加了4 种新的数据类型:三种成组数据 类型和一个新的6 4 位整数。所谓成组数据,是类似向量的个概念,也就是把几 个同一类型的长度较短的定点数据组合起来形成一定长的数据整体,例如用4 个 1 6 位半字组合成一个6 4 位的成组半字。三种成组数据分别为成组字节( 8 个字节) 、 成组半字( 4 个1 6 位半字) 和成组字( 2 个3 2 位字) ,也可以把6 4 位整数看作是成 组双字,见图2 2 。 因为龙芯2 号多媒体指令不产生算术例外,所以它用了三种新的运算类型来 处理溢出: 反绕:若最高位溢出,则直接抛弃溢出位,同时保留结果的其他位不变, 例如若8 位有符号数- 1 2 8 与一1 相加,结果溢出,按反绕方式运算,最后 中国科学院硕士学位论文:龙芯2 号多媒体指令集在m p e g 2 视频解码中的应用 结果为+ 1 2 7 。 有符号饱和运算:若结果溢出,上溢则将其设为有符号数取值范围的最 高值,下溢则将其设为有符号数取值范围的最低值,例如若8 位有符号 数一1 2 8 与一l 相加,结果溢出,按有符号饱和方式运算,最后结果为一1 2 8 。 无符号饱和运算:若结果溢出,上溢则将其设为无符号数取值范围的最 高值,下溢则将其设为无符号数取值范围的最低值,例如若8 位无符号 数2 5 5 与1 相加,结果溢出,按无符号饱和方式运算,最后结果为2 5 5 。 图2 2 龙芯2 号多媒体指令集的四种成组数据类型 龙芯2 号多媒体指令按照功能可分为算术指令、比较指令、数据转换指令( 包 括p a c k 指令和u n p a c k 指令) 、数据调整指令、逻辑指令和移位指令。 龙芯2 号多媒体指令集的算术指令包括加、减和乘和乘加,对s i m d 定点指 令来说,由于乘法运算结果的精度是操作数的两倍,因此在进行成组乘法设计时, 如何存储结果是个比较麻烦的问题。龙芯2 号多媒体指令集中的成组乘和成组乘 加运算只对成组字进行操作,它们对结果的处理不同:乘指令只保留低1 6 位结 果或高1 6 位结果,而乘加指令保留全部结果。乘加指令比较特别,它包含一个 把1 6 位数扩展为3 2 位数的过程,图2 3 是乘加指令的示意图,成缎的1 6 位字 两两相乘后,中间结果变为3 2 位,然后分别把相邻的两对结果相加,最后结果 送回目的操作数。算术指令不仅提供了加、减、乘、乘加等常规运算,还增加了 求绝对值、求平均值、求最大值和求最小值这几种运算,需要说明的是,求绝对 值运算在龙芯2 号多媒体指令集中被分为两条指令来实现,其中p a s u b u b 计算无 符号减法并取绝对值,b i a d d 完成8 个数相加,如图2 4 所示。 比较指令根据比较结果将目的操作数中相应位全部置o 或l ,如图2 5 所示。 数据转换指令分为成组指令p a c k 和分组指令u n p a c k 两类,成组指令p a c k 把1 6 位字饱和转换为字节或者把3 2 位双字饱和转换为1 6 位字;而分组指令u n p a c k 把源操作数中成组字节、成组字或成组双字的低高3 2 位与目的操作数对应交叉 第二章龙芯2 号及其多媒体指令集 组成一个新的成组字节、成组字或成组双字,图2 6 是p u n p c k l b w 指令的示意图, 它将两个成组字的低3 2 位进行分组。数据调序指令主要包括在源寄存器中插入 或从中抽取字节、按一定次序调整源寄存器中的数据。其中p i n s r h 指令不仅需 要两个源操作数,还需要立即数进行运算,而龙芯2 号的浮点指令不支持立即数, 于是把它拆成四条指令p i n s r h 一0 、p i n s r h j 、p i n s r h 一2 和p i n s r h 一3 ,每条指令 分别表示当立即数为o 、1 、2 、3 四个不同的值时的p i n s r h 操作,见图2 7 。逻 辑指令按位对6 4 位数进行与、与非、或和异或操作。移位指令的移动位数只能 来自龙芯2 号多媒体寄存嚣。没有专门的数据传输指令,可以用原有的浮点 1 0 a d s t o r e 指令,对于非对齐操作,则可以用定点的非对齐读写指令首先读 写到定点寄存器,然后转移到浮点寄存器。 s r c l s r c 2 亟 歪 二甄 圊 xxx 巫 二匿 正工卫 圈2 3 乘加指令示意图 x 7x 8x sx 4x 3x 2x 1d iiilii y 7y 6y 5y 4y 3v 2y 1y 0 a 螂7 - y n 黔x 毒堋) la 酗棋5 - 帽) 酷c x 4 - v 4 8 s f x 3 v 3 骼x 2 y 2 1 8 s i x - y ja 8 5 ( x 0 - y o i 、 0 0 hhh0 0 h0 0 ho o hs u m ( d l r s t i 叨,1 d 既t l f n 图2 4 龙芯2 号多媒体指令p a s u b u b 和b i a d d 示意图 中国科学院硕士学位论文:龙芯2 号多媒体指令集在m p e g - 2 视龋解码中的应用 图2 5比较指令的一个例子 图2 6p u n p c k l b w 指令示意图 表2 1 中指令的执行时间,除了乘加指令和乘( 仅低3 2 位) 指令执行需要 三拍,乘( 保留低位结果) 和乘( 保留高位结果) 指令执行需要两拍外其它的指 令执行只需要一拍。而且上述乘加或乘指令在功能部件中的执行实际上是全流水 的。 源,寄存器 二三二 二二至二i 二j 三二工二三三 源z 寄存器 二三二 二二三二 二二三二i 二卫 乳。 亘 三 二三 二三 沁- 亘 二三 二互 卫 s 艮z 三 二三 二互 二二三 吼s 三 二三 二互 习 图2 7 龙芯2 号多媒体指令p i n s r _ x 示意图 龙芯2 号多媒体指令集助记符大致分为前坠p 、操作码和后缀三个部分,后 缀中u s 和s 表明是无符号饱和还是有符号饱和运算方式,b 、h 、w 和d 分别表 示字节、半字、字和双字这几种数据类型,若输入和输出的数据类型不一致时, 会有两个数据类型后缀。另外,龙芯2 号多媒体指令集采用m i p s i i i 的浮点指令 格式,指令通常有三个操作数,自左向右分别是d e s t 和s r c l 和s r c 2 ,这三个 操作数都只能是多媒体( 浮点) 寄存器,其中d e s t 是目的操作数,而s r c l 和 1 2 第二章龙芯2 号及其多媒体指令集 s r c 2 分别是源操作数1 和源操作数2 ,它们只能来自寄存器,若有需要使用内存 中的操作数,程序员必须先用l d c i 指令读取数据到寄存器中:若指令中用到立 即数,由于这类指令往往只有一个源操作数,所以我们用第二个源寄存器来存储 这个立即数,需要程序员事先将要用到的立即数存入第二个源寄存器中。 本章首先简单介绍了通用6 4 位r i s c 结构微处理器龙芯2 号的体系结构 特点,它兼容m i p s i i i 指令集,是一个四发射的超标量和超流水线结构,采用了 很多先进的技术来提高流水线的效率,主要包括乱序执行和先进的c a c h e 设计等 技术。 龙芯2 号多媒体指令集是龙芯系列的第一个s i m d 指令集,它是有6 7 条指令 的6 4 位定点s i m d 指令集,支持8 个字节、4 个1 6 位数、2 个3 2 位数或6 4 位数 的并行定点操作。 多媒体指令发展至今,对于多媒体性能评测还没有一个类似s p e cc p u 2 0 0 0 一样被普遍接受和广泛应用的方法,现实中存在多种不同多媒体性能评测方法, 本文第三章将介绍这些不同的方法。 第三章多媒体性能评测方法 基准程序是对计算机系统某个方面的性能进行综合测试的程序,是计算机性 能评价的工具和方法。基准程序有不同的类型,最简单的如汉诺塔或九皇后之类 的基准程序和合成基准程序( 某些指令凑成的短程序,纯粹为了测试,并不进行 有实际意义的计算) 。但是,在进行多媒体性能评测的时候,人们通常不会用上 述几类基准程序,而会采用核心型基准程序或者应用型基准程序。 核心型基准程序是从实际的应用中抽取出来的占该应用运行时间比重较大 的代码段,通常会用多媒体指令对其进行优化后组成库的形式,这样源应用就可 以通过调用库中的函数进行优化。应用型基准程序是一个在计算机系统上实际运 行的完整应用,它所选用的输入数据集对现实的数据集具有很好的代表性。因此, 应用型基准程序的测试结果,相比核心型基准程序测试结果而言,更具有权威性。 当前,绝大部分多媒体工作负载都是基于w i n d o w s 平台的。为了研究多媒体 工作负载的特性,并对已有的s i m d 体系结构进行比较、评测,美国伯克利大学的 研究人员在上个世纪末设计了一组基于u n i x 系统的多媒体工作负载,其中包括了 很多在现实中具有代表意义的多媒体应用,并且所选应用都是开放源代码的。 本文以一个m p e g - 2 解码器为例,用龙芯2 号多媒体指令集对其进行了优化, 把m p e g - 2 视频播放帧速作为一个重要的评测手段,采用按m p m l 主类和主级( 分 辨率7 2 0 4 8 0 ,3 0 帧秒,或者分辨率7 2 0 5 7 6 ,2 4 帧秒) 方式压缩的m p e g 一2 视频流作为测试数据集,来比较多媒体优化前后的结果,同时给出多媒体优化对 整体应用的加速比。 3 1 一个测评c p u 多媒体性能的实际例子 图3 1 是一个测评c p u 多媒体性能的实际例子。所用的多媒体工作负载包括如 下四个基准程序:用于m p e g 一2 压缩的m a i n c o n c e p t 、用于m p 3 压缩的l a m e 、用于数 据压缩的w i n r a r 和用于m p e g 一4 压缩的x m p e g d i v x ,测评方法为将上述四个工作负 载在a t h l o n x p2 6 0 0 + 上运行所用时间作为基准时间,测出在每一款参评的c p u 上 运行这些工作负载所用时间,与基准时间相减计算出节省时间,然后计算节省时 间的平均百分比,并把它作为评测的依据。 中国科学院硕士学位论文:龙芯2 号多媒体指令集在m p e g - 2 视频解码中的应用 图3 1一个用多媒体工作负载测评c p u 性能的实际例子 来自h t t p :i w w w , t o m s h a r d w a r e , c o m l c p u 2 0 0 3 1 2 2 3 c p u - 旺i d e - 2 lh t m l 1 6 第三章多媒体性能评测方法 3 2 多媒体性能评测方法 1 m p e g m p e g 是一个视频及其伴音的编码国际标准,其中的m p e g 一1 和m p e g 一2 的应 用已经非常普及。在m p e g 一1 刚刚问世的时候,几乎没有人想到用软件来实时解 码m p e g 一1 流,这种情况一直持续到h p 公司在自己的工作站上加入第一个s i m d 多媒体指令m a x l 并实现一个实时软件m p e g 一1 解码器为止。而现在,在p c 机上 用软件来搔放o v d 已经很普遍了,d v d 是m p e g 一2 标准的一个应用子集。 h p 公司在设计m a x 一1 并利用它来实现一个实时软件m p e g l 解码器时,采用 了s i f 格式的m p e g - 1 视频解码帧速来作为衡量多媒体性能的方法 参考文献9 。 这种方法简单直观,易于测量。随着m p e g 的发展,它支持的范围越来越广,尤 其是随着v c d 、d v d 以及h d t v 等的逐渐普及,它的用户越来越多,有关m p e g 的 应用已经成为桌面系统中一类重要的应用。不仅仅如此,对m p e g 软件解码器的 优化方法很容易推广到其它类似的视频解码算法中。例如,m p e g 视频压缩算法 优化就对视频会议国际标准h 2 6 1 和h 2 6 3 中的视频压缩算法优化有很多可借鉴 之处。 本文就以一个m p e g 一2 解码器为例,用龙芯2 号多媒体指令集对其进行了优 化,把m p e g - 2 视频播放帧速作为一个重要的评测手段,采用按m p m l 主类和主 级( 分辨率为7 2 0 4 8 0 ,3 0 帧秒,或者分辨率为7 2 0 x5 7 6 ,2 4 帧秒) 方式压缩 的m p e g 一2 视频流作为测试数据集,来比较多媒体优化

温馨提示

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

评论

0/150

提交评论