(电路与系统专业论文)嵌入式多媒体网络传输系统音频子系统的设计及实现[电路与系统专业优秀论文].pdf_第1页
(电路与系统专业论文)嵌入式多媒体网络传输系统音频子系统的设计及实现[电路与系统专业优秀论文].pdf_第2页
(电路与系统专业论文)嵌入式多媒体网络传输系统音频子系统的设计及实现[电路与系统专业优秀论文].pdf_第3页
(电路与系统专业论文)嵌入式多媒体网络传输系统音频子系统的设计及实现[电路与系统专业优秀论文].pdf_第4页
(电路与系统专业论文)嵌入式多媒体网络传输系统音频子系统的设计及实现[电路与系统专业优秀论文].pdf_第5页
已阅读5页,还剩55页未读 继续免费阅读

(电路与系统专业论文)嵌入式多媒体网络传输系统音频子系统的设计及实现[电路与系统专业优秀论文].pdf.pdf 免费下载

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

文档简介

摘要 近年来,随着朗络技术以及多媒体信息技术的迅速发展,音频k 缩编码技术广泛应用子可视电话、i p 刚络电话、多媒体嗍络会淡和 无线通信领域。而d s p 相对于通用c p u 在处理海量多媒体数据时的绝 对优势,使得音频压缩在d s p 上的应用逐渐成为研究的焦点。文中简 要的介绍j ,国内外现存的些商用音频压缩系统,如g 系列数字音频 压缩标准、归e g 系列伴音标准,详细描述了基于p n x l 5 0 0 多媒体刚 络传输系统中音频子系统的硬件实现,并通过对c a c h em i s s 、指令 跳转等等降低d s p 效率的不利因素的分析,配合对p n x l 5 0 0 :苍片功能 结构及c a c h e 体系结构的理解,采取r 系列措施来提高c a c h e 命中 率,提高d s p 的有效利用率。 关键词:音频编码器,优化,高速缓存 中同科学技术人学坝卜论文 a b s tr a c t i nr e c e n ty e a r s ,t h en e t w o r kt e c h n o l o g ya n dm u l t i m e d i ai n f o r m a t i o n t e c h n o l o g y a r e d e v e l o p i n gr a p i d l y a n da u d i o c o d i n g d e c o d i n g t e c h n o l o g ya r ew i d e l yu s e df o rv i s u a lt e l e p h o n e 、i pv i d e on e t w o r k s 、 m u l t i m e d i an e t w o r k sa n dw i r e l e s sc o m m u n i c a t i o n sf i l e d t h ea p p l i c a t i o n o fa u d i op r o c e s sb a s e do nd s pb e c o m e sm o r ea n dm o r ea b r o a d h o w e v e r , b e c a u s eo fi n a p p r o p r i a t ed e s i g no fp r o g r a ms t r u c t u r e ,w h e na u d i o c o m p r e s s i o na l g o r i t h mi st r a n s p l a n t e dt ot h e s ek i n d so fd s pp l a t f o r m s , t h ec a c h eh i tr a t i oi sl o wa n dt h ee f f i c i e n c yo fd s pd e c r e a s e d t h i sa r t i c l e b r i e f l y i n t r o d u c e st h ei n t e r n a t i o n a lc o m m e r c i a la u d i oa n d s p e e c h c o m p r e s s i o ns y s t e m ,s u c ha st h eg s e r i e so fd i g i t a la u d i oc o m p r e s s i o n s t a n d a r da n dm p e ga u d i os t a n d a r d i td e s c r i b e st h eh a r dw a r e i m p l e m e n t a t i o no ft h ea u d i os u b s y s t e mb a s e do np n x l5 0 0m u l t i m e d i a n e t w o r kt r a n s m i s s i o ns y s t e m i ta l s oa u g m e n t st h ea l g o r i t h mb ya n a l y z i n g t h er e a s o no fc a c h em i s sa n df r e q u e n tj u m po p e r a t i o n ,a n dr e d e f i n e dt h e d a t as t r u c t u r e ,i m p r o v e dt h ea r i t h m e t i c ,u s e dt h ep n x15 0 0 si n s t r u c t i o n s e tt oi n c r e a s et h ec a c h eh i tr a t e ,e l i m i n a t et h ef r e q u e n tj u m po p e r a t i o n t h ei m p r o v e da u d i oe n c o d e rc a l lc o m p r e sa u d i os e q u e n c ea tr e a l t i m e w i t hh i g hd e f i n i t i o n k e yw o r d s :a u d i oe n c o d e r o p t i m i z a t i o n ,c a c h e 中周科学技术大学硕士论文 专用名词翻译中英文对照 c a c h e c a c h em i s s c a c h el i n e c a c h e b a n k s l o t c u s t o mo r l e r a t i o n d e c i s i o nt r e e i n s t r u c t i o nl e v e lp a r a l l e l i s m ( i l p ) l o o pu n r o l l g r a f t i n g p c m 6 : 高速缓存 : 缓存未命中缓存失配 : 缓存块缓存线 : 缓存分区 :槽( 5 个操作分别在5 个槽中执行) : 定制操作 :判决树 : 并行度 : 循环展开 : 嫁接 :脉冲编码调制 中国科学技术大学学位论文相关声明 本人声明所呈交的学位论文,是本人在导师指导下进行研究 工作所取得的成果。除已特别加以标注和致谢的地方外,论文中 不包含任何他人已经发表或撰写过的研究成果。与我一同工作的 同志对本研究所做的贡献均已在论文中作了明确的说明。 本人授权中国科学技术大学拥有学位论文的部分使用权, 即:学校有权按有关规定向国家有关部门或机构送交论文的复印 件和电子版,允许论文被查阅或借阅,可以将学位论文编入有关 数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、 汇编学位论文。 保密的学位论文在解密后也遵守此规定。 作者签名:崆戋- j 泸7 年了7 j j 日 中国科学技术大学硕七论文 1 1 编码标准发展概要 t 绪论 人们生活在各种声音的环境中,语言在社会交际活动中传递着信息,音乐表 达着人类情感,因此声音具有两重性,即是客观存在,又是主观感觉的反映。人 们通过感观收集各类信息,其中包括听觉信息,据统计,人类依靠听觉获得的信 息占全部信息的3 0 以上。随着人类听觉特性理论的深入发展和数字化技术的广 泛应用,以及专用s d p 集成芯片技术的进步,音频编码技术也广泛地应用于数字 音频广播( d a b ) 、高清晰度电视( h d t v ) 、伴音多媒体网络通信等领域。 语音编码是以尽量少的数字代表语音的过程,同时还要保证某一系统所需 的品质和清晰度。目前数字音频领域流行的音频编码技术按数据量的压缩性能可 分为非压缩音频( 如波形音频、m i d i 音频和c d 音频等) 和压缩音频( 如m p e g 音频、杜比a c - 3 等) 两类。 一般来讲,根据压缩后的音频能否完全重构出原始声音可以将音频压缩技术 分为无损压缩及有损压缩两大类。而按照压缩方案的不同,又可将其划分为时域 压缩、变换压缩、子带压缩以及多种技术相互融合的混合压缩等等。 音频压缩技术的发展最初是从无损压缩开始的。7 0 年代初,开始采用的类似 p c m 的瞬时压扩技术和块压扩( b l o c k c o m p r e s s i n g ) 技术。这种技术的编码效 率较低。8 0 年代末至9 0 年代初涌现的编码算法普遍采用了一种高效率编码技术, 即利用人耳的掩蔽效应和临界频带等特性来进行自带编码和变换编码。其中有: m u s i c a m ( 掩蔽型通用子带综合编码复用) 系统;1 2 8 k b p s 的a c - 2 编码器;a c - 3 系统:a s p e c ( 自适应频谱感知熵编码) 和s b - a d p c m ( 子带自适应音频脉冲编码) 编码算法等。9 0 年代至今,有损音频编码把音频数据的压缩率提高到了1 2 :l , 付出的代价是音质的下降。如果人们根据不同的应用要求把音频质量同数据压缩 率进行折衷,这些方案就显得非常有用。比较著名的有:l l p 3 ,从e ( 高级音频编 码) ,跚等。 当前商用音频编码系统中,主要有g 7 x x 系列,船e g 系列和杜比音像系统。 中国科学技术大学硕七论文 1 2 硬件开发环境简介 本系统是基于p h i l i p sn e x p e r i ap n x l 5 0 0 的多媒体网络传输系统,它能完 成视频和音频数据的采集与输出功能,并能通过高速网络传递压缩编码后的音视 频数据流。p n x l 5 0 0 具有强大的多媒体数据处理能力,它在系统中可以完成音视 频数据的压缩编码或解码,同时处理网络数据的收发,并可以通过p s o s 实时操 作系统协调和调度整个系统的任务,从而形成强大的多媒体音视频数据处理和传 输系统。 p n x l 5 0 0 多媒体网络传输系统平台的结构示意图如图1 1 所示: 图1 1 系统平台功能模块示意图 其中音频输入输出( a u d i oi n p u ta n do u t p u t ) 单元提供读写( d m a 操作) 常用音频d a ,a d 芯片的所有信号,这两个接口通过串行数据线与片外的音频 芯片相连。音频输入输出单元具备非常强大的可编程功能,通过编程,它可以产 生多种多样的时序来适合各种各样的音频芯片。该单元从p n x l 5 0 0 的时钟系统获 得采样时钟,而p n x 5 0 0 的时钟系统可以任意编程,因此该单元可以对外提供多 2 中国科学技术人学蝴二i 论文 种多样的采样率支持,和精度支持。该饱元支持立体声,并由多通道选择,例如 音频输出单元最多可以支持到8 通道,使用起来非常方便。 中国科学技术大学硕十论文 音频压缩编码的国际标准 近年来,一系列国际音频压缩编码标准的指定,极大地促进了音频压缩编码 技术和多媒体通信技术的发展。音频压缩编码标准的制定工作主要是由国际标准 化组织( i s o ) 和国际电信联盟( i t u ) 完成的。表l 便是其中具有代表性的标准。 表2 1 :数字音频压缩编码算法及特性 压缩标准采样频率 数据率 算法名称频带l f l i z应用 或系统f ( k h z ) k b p s 脉冲编码调 p c m g 7 儿6 4 制 自适应差分3 2 公共网i s d n a d p c m 脉冲编码调 g 7 2 10 3 - 3 48 配音 制 波 a d p c m p 4 0 3 2 2 形 g 7 2 6 c e m 4 1 6 编 子带一自适应 码s b - d p c 6 4 5 8 4i s d n 电视会 差分脉冲编 g 7 2 2o 0 5 7 1 6 m 8议 码调制 嵌入式一自适 嵌入式4 0 3 2 2分组交换语 应差分脉冲 g 7 2 70 3 - 3 48 a d p ( w 4 1 6音 编码调制 参 数线性预测编 l p c 一1 0f s - 1 0 1 50 3 - 3 42 4 编码保密话声卫 8 码星通信 混c e l p f s - 1 0 1 60 3 3 44 8 合m p l p c9 6 编c e l p c码激励l p c4 ,6 移动通信 码 矢量和激励 v s e l p i s - 5 4o 3 3 488 语音邮件 l p c 8 8 5 4 2 n r f ip 1 q - q e矬甜l 由话 4 i s 一9 6 0 。t p , p e - l t p 规划码激励 g s m王3 l p c & 时预测 低延时码激 l d - c e l pg 7 2 80 3 - 3 481 6移动电话 励l p c c s a c e l g 7 2 98 p m p - m l o g 7 2 3 :l0 3 3 485 3 炻3 多媒体通信 c e l p 1 9 2 1 2 8 多予带、感知 i s o i e c3 2 ,4 4 1 r e d ,运动阻 m p d g io 0 2 2 0 9 6r 每 编玛1 1 1 7 2 - 34 8像传酱 卢道 m p e g - 2 3 多子带、感知 b o o k3 2 ,4 a ,i ,6 4 0 8 9 6 ; 0 0 2 2 0d v o c 编码 a - e 4 8 ,9 6无声道 感 m p e g - 2 a 多子带、感知 i s 0 i b c 运动蚓像伴 知0 ,0 2 ;2 0 a c编码1 3 8 1 8 - 3音 编 参数编码2 - 4 码 m p 8 g 一4 基丁:c e l p 4 2 4 时频编码 a a cp l u s1 6 - 6 4 2 8 4 a c 一3 感知编码 0 0 2 - 2 0 4 4 音响 1 3 5 0 s r s 一3 d青魄,t : 2 1g 。7 x x 标准简介 c c i t t 最初定义的音频编码算法建议标准包括:g 7 1 1 ,g 7 2 1 ,g 7 2 3 等等。 1 9 9 5 年,i t u - t 批准了新的语音压缩标准g 7 2 9 。该标准采用共扼结构代数码激 励线性预测( c s - c e l p ) 。 中国科学技术大学颂:l :论义 g 7 2 3 语音编码是低速率语音编码方案中的一种,它提供6 3 k b i t s 和 5 3 k b i t s 两种码率,可在语音帧的交界处进行转换。由于码率较低,它非常适 合于多媒体通信中的语音编码传输,且能获得较好质量的重建语音,在自然度和 可辨识性上都比较令人满意。 g 7 2 3 1 利用语音样点间的短时相关性和相邻语音段的长时相关性,及对语 音去除两种相关后的余量信号分别进行编码。对余量信号的编码可选择 6 3 k b i t s 或5 3 k b i t s 两种码率,前者( m p - m l q 算法) 利用余量信号中小信号 对合成语音质量影响不大,故可以对余量信号进行削波处理,只留下幅度较大者 进行编码;后者( a c e l p 算法) 用码书中存储的码字来替代余量信号,以搜索出 与余量信号之间均方误差最小的码矢量进行传输。两种算法的区别在于用来代替 余量信号的编码脉冲数目不同:a c e l p 所用的脉冲数略少于m p m l o 的脉冲数。 编码器采用线性预测合成分析编码方法,使感知加权误差信号最小,一次处理一 帧,共2 4 0 个样点。其处理流程如图2 1 所示。输入的语音要经过三步处理。每 帧( 2 4 0 个采样点) 先经过高通滤波以去掉直流分量,然后分成4 个6 0 个样点 的子帧,每个子帧独立迸行l p c 分析。为了提高l p c 系数的连续性,采用了长度 为1 8 0 个样点的重叠窗,即同时包含前一个子帧、当前子帧和后一子帧,这使算 法引入了6 0 个样点的超前时延,因此算法的总延时为3 7 5 m s 。l p c 系数用线谱 频率( l s f ) 表示,l s f 参数采用预测分裂矢量量化,只对第四个子帧进行。为 了提高量化感知质量,高通滤波后的语音信号需通过共振峰感知加权滤波器和谐 波噪声整形滤波器,以生成初始目标信号,前者参数由各子帧未量化的l p c 系数 构成,后者通过对每两个子帧进行开环基因周期估计得到,其中基因周期的范围 1 8 到1 4 2 个样值。系统的脉冲响应由l p c 合成滤波器、共振峰感知加权滤波器 和谐波噪声整形滤波器组成,用于系统零输入响应的计算和最佳激励估计。g 7 2 3 编码器还包括一个五阶基因预测器,其参数根据开环基因估计值和脉冲响应进行 闭环基因搜索得到。在进行最佳激励估计时,需要从初始耳标信号中减去系统零 输入响应和基因预测器贡献以得到最佳目标信号。然后针对高低码率,编码器分 别采用咿一m l q 和a c e l p 方法进行编码。其中l s f 参数、基因值和激励参数需传 送给解码器。 6 中国科学技术大学硕士论文 图2 1 语音压缩编码器原理框图 解码器首先从接受码流中提取l s p 码本索引值,经过l s p 解码、内插得到每一子 帧的l s p 参数,并转换成l p c 参数,以构成合成滤波器。再从接受码流中提取每 一子帧的基因周期、长时增益码本索引和激励脉冲信息,用与编码端完全相同的 码书分另h 进行基音解码和激励解码以得到激励信号,然后对激励信号进行前向和 后向基音后滤波、合成滤波器滤波以获得重建语音,最后将重建语音经过共振峰 后滤波器和增益定标单元即可得到解码器的最后输出,其原理框图如图2 2 所 示。 , 压丑 耳三 日j 图2 2g 7 2 3 1 语音解码器原理框图 7 蕈建谮音 中国科学技术大学硕: :论文 g 7 2 9 语音编码算法叫做对结构代数码激励线性预测语音压缩编码,它的 核心原理是线性预测和矢量量化。这种编码是为低时延应用设计的,以共轭结构 代数码本激励线性预测为基础,在线性预测参数量化上使用分列式矢量量化,在 自适应码本搜索上采用开环、闭环相结合固定码本采用,保证在中低速率上提供 较好的语音合成和良好的稳定性,它的帧长只有l o m s 。处理时延为2 5 m s ,比特 率为8 k b p s 。g 7 2 9 有两个版本:g - 7 2 9 和g 7 2 9 a 。这两个版本互相兼容但它们 的性能有所不同,复杂度低的版本g 7 2 9 a 性能较差。这两个版本都提供了对帧 丢失和分组丢失的隐藏处理机制,因此通过网络传输语音时,g 7 2 9 ( g 7 2 9 a ) 编码方式是很好的选择。 编码器原理图如图2 3 所示。输入信号先经过高通滤波器预处理,每1 0 帧 作一次l p 分析,得到l p 滤波器系数( 合成滤波器系数) ,这些系数转换为l s p ( 线谱对) 参数进行二级矢量量化。激励信号经合成滤波器后生成重构信号,与 输入信号相减得到残留信号,该残留信号经知觉加权滤波器处理,根据听觉感受 频谱,反馈回控制回路,通过使加权残差信号均方差最小的原则确定激励信号及 其增益,知觉加权滤波器也是根据预测分析所得的l p c 信息构造的。基音分析模 块通过自相关分析得到基音周期,据此信息搜索自适应码本,确定最佳自适应码 本矢量,得到语音中具有准周期特性的激励,然后再搜索固定码本,根据最小化 加权均方差( b i s e ) 准则确定最佳固定码本矢量,得到语音模型的随机激励信号。 最后确定两个码本矢量的增益g c 和g p ,采用具有共轭结构的两级码书进行矢量 量化。上述过程确定的线性预测编码信息( 线谱频率l s f ) 、自适应码本矢量、 固定码本矢量和增益构成完整的g 7 2 9 声码器编码器参数。所有这些参数均以码 本索引的形式发往接收端。 中国科学技术人学颂士论丈 l p c 信息 图2 3 g 7 2 9 编码器原理图 解码器原理框图如图2 4 所示。首先从接收到码流中提取参数序号,由序号 解码得到l o m s 语音帧对应的编码参数,这些参数包括:l s p 系数,两个分数基 因延时,两个固定码本矢量和两组自适应和固定码本增益,每子帧l s p 参数被内 插并转换为l p 滤波器系数,然后以5 m s 子帧为单位合成语音,合成步骤如下: 1 ) 自适应和固定码本分别乘以各自的增益加起来构成激励; 2 ) 激励l p 合成滤波器重构语音; 3 ) 重构语音信号经过后置处理,包括长时后置滤波、短时合成滤波和高通滤波。 图2 46 7 2 9 螭褐器框图 9 中国科学技术大学硕士论文 2 2m p e g 标准介绍 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 ) 的简称,它是 由i s o 和i e c 领导下的一个工作组,通过制定不同标准,可适应多媒体格式不断 增加的需要。 i s o i e c 的m p e g 音频编码的标准化采用了2 种编码算法:m u s i c a m 和a s p e c 。 以这两种算法为基础形成了三个不同层次的音频压缩算法,对应不同的应用要求 并具有不同的编码复杂度。 声音能否被听到,取决于它的频率和强度。使声音听得见的最低声压称昕阈, 它和声音的频率有关。这一特性被充分利用于宽带声音编码中,一个声音信号传 到人耳后,并不是所有组成这个声音的分量都能被人的听觉系统所感觉。首先, 人耳不能听至0 听觉区域以外的声音;其次,在听觉区域内,人耳不能听到低于听 阈曲线声压级的声音。因此在记录、传输及编码时,可以将听阈曲线下的声音信 号省略掉,以减少记录传输的信息量,节约编码的比特数。 实践证明,人的听觉系统对声波信号的处理并非是完全线性的,声音信号在 听觉系统中会经过非线性处理,当有一个强度适当的纯音作用到耳朵时,会听到 原频率的系列谐波或泛音,当有两个声音作用时能听到一组音,它包括这两个 基本音和它们的谐音、和音和差音,除了基本音以外,其他音称为主观音,客观 上并不存在,这些主观音是由听觉机构非线性效应引起的。 掩蔽效应是一种常见的心理声学现象。它是指在一个较强的声音附近,弱的 声音将不被人耳察觉,即被“掩蔽”掉。这时较强的声音成为掩蔽声,弱的声音 称为被掩蔽声。不可闻的被掩蔽声的最大声压级成为掩蔽门限。 掩蔽效应分为频域掩蔽( 或同时掩蔽) 和时域掩蔽( 或异时掩蔽) ,异时掩 蔽又分为前掩蔽和后掩蔽。 频域掩蔽是指掩蔽声和被掩蔽声同时发生作用。通常,频域中的一个强音会 掩蔽与之同时发生的附近的弱音,弱音离强音越近,一般越容易被掩蔽;反之, 离强音较远的弱音不容易被掩蔽。一般来说,低频的音容易掩蔽高频的音;在距 离强音较远处,绝对听阈优该强音所引起的掩蔽阈值高,这时,噪声的掩蔽阈值 应取绝对昕阈。 时域掩蔽是指掩蔽效应发生在掩蔽声与被掩蔽声不同时出现时。时域掩蔽又 1 0 中国科学技术大学硕士论文 分为导前掩蔽和滞后掩蔽。若掩蔽声音出现之前的一段时间内发生掩蔽效应,则 称为导前掩蔽:否则称为滞后掩蔽。产生时域掩蔽的主要原因是人的大脑处理信 息需要花费一定的时间,时域掩蔽也随着时间的推移很快会衰减,是一种弱掩蔽 效应。 m p e g 一1 音频编码支持单声道、双声道、立体声或联合立体声的两个声音通 道的音频格式。该压缩算法可以把c d 音质的两个声道共包含1 4 m b i t s 的数据 流压缩到1 2 8 k b i t s ,仍然保持高保真的声音质量。它由l a y e ri ,l a y e ri i 和 l a y e ri i i 三个层次构成,压缩率顺序是i c 拳n e s s h o r t _ p w r + d( 2 ) 其中,eer _ s h o r tp w r 和n e s s h o r t _ p w r 分别代表误差信号和近端信号的 短窗功率估计值。c 是系数常量。如果检测出双端说话模式,则要冻结fir 滤 波器的系数更新功能,只需要完成滤波功能。- 当只有近端用户说话而远端用户不说话的时候,就是近端说话模式。式( 3 ) 用于检测近端说话模式。 r les s h o r t _ p w r + n e sm a r g i n n e s l o n g _ p _ r r( 3 ) 其中,ne8 一s h o r tp w r 和n e s _ l o n g _ p v r r 分别代表近端信号短窗功率估计 值和长窗功率估计值。n e s _ m a r g i n 是常量,由试验来确定。如果检测出为近端 说话模式,那么,应该通过图4 4 中的n l m s 控制器同时冻结n l m s 自适 中国科学技术大学颂士论文 应滤波器的滤波功能和系数更新功能。 在本系统中,免提状态下扬声器和话筒的距离为1 5 厘米左右,我们在扬声 器和外壳之间增加了隔音海绵,以尽量减少话音通过外壳传递到话筒的功率。不 考虑声音在空气中和固体中传播速度的差异,即认为声音的传播速度为3 4 0 m s , 如此计算延迟时间为0 1 5 3 4 0 = 0 4 4 m s 。因此延迟时间设为0 5 m s 比较合适。 还有就是声音的衰减,在室内的环境下,考虑到各种反射的影响,声音并不 是按照跟距离比例关系衰减的,计算起来比较复杂,因此我们通过试验的方法来 确定参数,最后测试结果表明,在衰减3 d b 的情况下,效果最好。 中国科学技术大学硕士论文 音频编解码的实现与优化 5 1 音频编解码移植到系统平台时存在的问题 将g 7 1 1 、g 7 2 3 、g 7 2 9 、m p 3 编解码器移植到基于p n x l 5 0 0 的多媒体网络 传输系统上运行时,存在以下普遍问题:缓存失配严重,程序调度频繁,打乱了 程序的流水线操作等等。 因此,我们需要重新设计适合p n x l 5 0 0 体系结构的音频编码器,我们将在接 下来一节主要介绍重新设计的g 7 2 3 、g 7 2 9 与m p 3 编码器。 5 2g 7 2 9 的优化实现 优化方法包括:与平台无关的算法优化;采用p n x l 5 0 0 提供的定制操作;充 分利用v l i w 指令并行;结合p n x l 5 0 0 的存储结构特点,提高c a c h e 的命中率等。 5 2 1 循环处理 通过t r i m e d i a 开发软件提供的代码分析,对g 7 2 9 编码部分进行分析,可以 发现,c p u 时间大部分都花在了循环次数很多的f o r 循环上。因此我们可以采取 循环展开的优化方式。循环展开( l o o pu n r o l l ) 过程中不能保留线性过程:即 当前指令执行的结果不能作为后条指令的输入,否则就失去了并行处理能力。循 环展开增加了代码量,但可以使循环内每条代码之间不存在依赖关系,从而可以 利用p n x l 5 0 0 微处理器的并行性,提高运行速度。例如: f o r ( i = 1 ;i 4 :i + + ) a i = b i + 4 : 可以展开成 a 1 = b 1 】+ 4 : a 2 = b 2 + 4 : 中国科学技术大学硕j l j 论文 a 3 = b 3 + 4 : 对于循环体内的一些指令操作,在保证算法正确的前提下,尽量放在循环体 外执行。例如:算数能力的饱和、溢出处理。 5 2 2 定制操作 p n x l 5 0 0 的定制操作包括了p n x l 5 0 0 指令集中的所有操作。由分析结果得知, 文件b a s i c o p c 中的函数l _ m u l t ( ) ,l - a d d ( ) ,l _ m a c ( ) 和s a t u r e ( ) 占全 部c p u 时间的4 6 。利用p n x l 5 0 0 的定制操作取代b a s i c o p c 中的基本函数, 可明显提高执行效率。 语音编解码算法中处理的是1 6 b i t 的数,而p n x l 5 0 0 的寄存器是3 2 b i t 寄存 器,c p u 以3 2 b i t 数为处理对象。若能一次处理2 个1 6 b i t 数,效率将提高一倍。 p n x l 5 0 0 提供很多s i m d 类的定制操作,对语音压缩算法特别有用的有i f i r l 6 。 下面我们通过一个例予来说明。 i f i r l 6 表示双1 6 比特有符号数乘积之和,结果为有符号数,如图5 1 所示。 i fr g u a r dt h e n t e m p 一s i g n _ e x t l 6 t 0 3 2 ( r s r c l ) 半s i g n _ e x t l 6 t 0 3 2 ( r s r c 2 ) + s i g n e x t l 6 t 0 3 2 ( r s r c l ) 母s i g n _ e x t l 6 t 0 3 2 ( r s r c 2 ) ; r d e s t 一m i n ( m a x ( 一2 3 :t e m p ) ,2 ”一1 ) : 可见,i f i r l 6 一个指令能完成两次乘法一次加法,在g 7 2 9 计算基音周期 中用到互相关,而互相关就需要用到i f i r l 6 。 , 亘甲,。e 手甲 1 ,l 竺 一毒 一o l 4 * 一j 3 2 3 0 f u l l p 。r e c i 。, i o 。u 二二二:童i 二二:= j i 一 c l i p 挪t 2 3 1 - 1 - 2 3 1 1 1 1 1 - 。p 。- 。一 中国科学技术大学硕士论文 图5 1i f t r l 6 定制操作功能示意 在使用s i 帅类的定制操作时,参数的2 个3 2 b i t 数必须自然定位,否则计 算的结果不对。p a x k l 6 l s b 定制操作能把2 个3 2 b i t 数的低1 6 b i t 数合成一个新 的自然定位的3 2 b i t 数。函数d o t p r o d u c t ( ) 的功能是求2 个数组的点积,g 7 2 9 中有很多类似的算法。采用s i t d 类指令级优化函数d o t _ p r o d u c t ( ) ,结果如下: w o r d 3 2d o t p r o d u c t ( w o r l d l 6x ,w o r l d l 6y ,w o r l d l 6l g ) w o r d l 6i : w o r d 3 2s u m : s u m = o : f o r ( i = o :i l g :i + + 2 ) s u m = d s p i a d d ( s u m 。i f i r l 6 ( p a c k l 6 l s b ( x i ,x i + 1 ) , p a c k l 6 l s b ( y i ,y i + 1 ) ) ) s u m = d s p i m u l ( s u m 2 ) : r e t u r ns u m : 很多函数都可采用类似的方法优化,优化质效率提高接近l 倍。在此基础上, 还可以提高指令级并行以进一步优化。 5 2 3 指令级优化 虽然c p u 发布的每条v l i w 指令可同时执行5 个操作,但是由于每个操作之 间存在依赖性,再加上调用函数、f o r 循环和if 语句等必然有的3 个时钟周期 的开销,实际上得到的指令级并行远小于5 。 对予d s p 类算法,大部分c p u 时间花在少部分代码上。这部分代码计算量较 大,大都位于循环体内,采用一定的方法,可有效提高指令级并行。以 d o t _ p r o d u c t ( ) 为例,数组x i 3 何数组y j 的存储空间相互独立,可以用关键字 中国科学技术丈学硕士论文 r e s t r i c t 限定。关键字r e s t r i c t 仅用于指针,所以需要修改d o t p r o d u c t0 的 函数声明,改数组为2 个r e s t r i c t 指针;循环次数不变,每次调用该函数都是 4 0 ;去掉形参l g ,以4 0 代替。展开循环体,分4 个部分独立求和,迸一步优化, 结果如下: w o r d 3 2d o t p r o d u c t ( w o r d l 6 * r e s t r i c tx ,w o r d l 6 * r e s t r i c ty ) w o r d l 6i : w o r d 3 2s u m ( ) ,s u m l ,s u l i l 2 ,s u m 3 ,s u m ; s u n m o = o ,s u m l = o ,s u m 2 = o ,s u m 3 = o ,s u m = o ; f o r ( i = 0 :i 4 0 :i 仁8 ) ( s u m o = d s p i a d d ( s u m o ,i f i r l 6 ( p a c k l 6 l s b ( x ( i ,x i + 2 ) , p a c k l 6 l s b ( y i ,y i + 2 ) ) ) ; s u m l = d s p i a d d ( s u m l ,i f i r l 6 ( p a c k l 6 l s b ( x i + 1 ,x i + 3 3 ) , p a c k l 6 l s b ( y i + 1 ,y i + 3 ) ) ) : s u m 2 = d s p i a d d ( s u m 2 ,i f i r l 6 ( p a c k l 6 l s b ( x i + 4 ,x i + 6 ) , p a c k l 6 l s b ( y i + 4 ,y i + 6 ) ) ) : s u m 3 = d s p i a d d ( s u m 3 ,i f i r l 6 ( p a c k l 6 l s b ( x i + 5 ,x i + 7 ) , p a c k l 6 l s b ( y i + 5 ,y i + 7 ) ) ) : s u m = d s p i a d d ( d s p i a d d ( s u m o ,s u m l ) ,d s p i a d d ( s u 咄s u m 3 ) ) : s u m = d s p i 叫l ( s u m ,2 ) : r e t u r ns u m : 5 2 4c a c h e 优化 c a c h e 在内存和d s p 之间提供了一个缓冲,允许d s p 以较快的速度读取c a c h e 上存储的数据。由于种种限制,c a c h e 不可能做得很大,通常情况下远小于r a m 的大小,因而存在一种可能,d s p 需要读写的数据已经存在内存中,却未被读 中国科学技术大学硕士论文 进c a c h e ,这种情况下就会发生c a c h em i s s :c p u 停止工作,直到所需的数据被 读入c a c h e 。因此,在优化时,要处理的数据尽量紧密地存放在一起,以增加c a c h e 的命中率。 我们同时选择采用改变内循环中最右队列的方式来优化c a c h e 。例如: 程序l : # i n c l u d e # i n c l u d e c h a ra 3 0 0 6 4 : m a i n ( ) i n tk 1 : f o r ( 1 = 0 :l 6 4 :l + + ) f o r ( k = o :k # i n c l u d e c h a ra 3 0 0 6 4 : m a i n ( ) i n tk ,1 : f o r ( k = o :k 6 4 :k 十+ ) f o r ( 1 - 0 :l 3 0 0 ;1 + + ) a k 1 = o : 左右两个程序的执行结果一样,但是循环顺序交换,d a t a c a c h e 每个块大小 6 4 b ,以块为单位进彳亍操作。程序l 中内循环每次解循环都要超过6 4 b y t e 数据, c a c h em i s s 严重,而右循环改变了循环队列,有效地减少了c a c h em i s s 。 4 l 中国科学技术大学硕士论文 5 2 5 优化结果 综合上述方法对g 7 2 9 编码器进行优化,优化前复杂度为2 0 m i p s ,优化后 复杂度为2 m i p s 。 5 3g 7 2 3 的优化实现 对g 7 2 3 1 语音编解码器的代码优化是g 7 2 3 1 语音编码器性能优化的主要 手段。与g 7 2 9 类似,根据p n x l 5 0 0 系统的硬件及编译系统特点对g 7 2 3 语音编 解码器的代码优化。 1 ) 使用定制操作。充分利用p n x l 5 0 0 微处理器的并行性能。 2 ) 循环展开。通过增加每次循环汇中执行的指令来提高编译器的软件流水 效率。虽然解循环增加了代码量,但可减少循环内代码之间的依赖关系,从而可 利用p n x l 5 0 0 的并行性。t r i m e d i a 编译系统可以进行自动解循环,但手工循环 展开往往效果更好。 3 ) 变全局变量为局部变量。由于全局变量不能分配给存储器,而从内存中 读取全局变量需要3 个时钟周期,因此优化代码中需要对频繁使用全局变量的模 块进行局部化处理,即复制一份全局变量给局部变量,这样就可以利用寄存器对 变量进行操作,节省访问时间。处理完后再用这些局部变量的结果更新全局变量。 例如,在g 7 2 3 1 协议中很多处需要对信号进行住店i i r 、f i r 滤波操作。而这 些参数均为全局变量,此时就可以配备一份定义为局部变量的滤波系数对整个子 帧处理完后再更新全局系数,从而提高操作全局变量操作的效率。 4 ) 去掉函数调用。函数调用需要一些额外的开销,如寄存器的入栈出栈保 护。优化时可将某些频繁使用的小函数采用宏定义的方法实现,以节省系统开销。 5 ) 使用r e s t r i c t e d 指针。在编译时编译器认为使用r e s t r i c t e d 指针所定 义的指针其对应的存储体是独立的,即它和其他任何指针互不依赖,从而可以最 大限度的提高软件流水效率,可以增加并行性。 6 ) 将变长循环改为定长。一般情况下,对于次数确定的循环编译器能自动 地进行循环展开,但对于变长循环,由于编译时难以确定循环次数而不能自动展 中国科学技术大学硕士论文 开。改变长循环为定长,能够取得人工循环展开的效果。 7 ) 编译优化。t r i m e d i a 的编译系统能够自动进行寄存器分配、指令流分析 和各种优化处理,其编译器提供了6 级优化,可以自动进行循环展开、函数内联、 代码嫁接( 用代码复制来代替分支转移) 及对内存变量进行别名分桥( 减少变量 之间的依赖性) 。但是由于编译系统本身的局限性,手工优化时必不可少的,编 译优化是通过制定编译参数由编译系统自动完成的。 下面将枚举编码过程中基音预测的一段代码用于较形象地描述部分代码优 化原则。 优化前代码: f o r ( j = o :j e n c _ b i t s l ) * c s 7 3 ) e n c _ b i t s 2 ) + ( ( ( * e n c _ b a n d l + 7 ) e n c _ b i t s i ) 牦a 7 ) e n c _ _ b i t s 2 ) : b d = ( ( ( 木( e n c _ b a n d l + 7 ) e n c _ b i t s l ) 木c s 7 ) e n c b i t s 2 ) 一 ( ( ( * e n c _ b a n d o + l o ) e n c _ b i t s i ) 宰c a 7 ) e n c b i t s 2 ) ; 例三: s t e p _ f i x e d = ( ( 1 1 6 ) s t e pf i x e d ) : 在定点化数据处理中,要尽可能使程序中的所有计算步骤中出现溢出的概率 最小,这样不必做任何附加的溢出判断和处理。因为任何溢出处理都意味着需要 对所有样本点无一例外的增加判断和处理语句,这样会增减程序需要执行的指令 数目,影响运行速度。例二中就对乘法运算之前提前对乘数作了预处理,这主要 是因为定点数相乘时,算数单元获得的结果是两个乘数的精度相加,当乘数的数 档 中国科学技术大学硕士论文 值较大时,在乘法运算过程中很容易发生数据溢出。当算数单元在乘法运算产生 溢出时,即便对最后的运算结果做精度处理,获得的也是错误的后果,因此对定

温馨提示

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

评论

0/150

提交评论