基于AltiVec的高效FIR滤波器优化设计
2014-09-26杜亚琦周建英
杜亚琦,周建英
(1. 通信信息控制和安全技术重点实验室 浙江 嘉兴314033;2.中国电子科技集团公司第三十六研究所 浙江 嘉兴314033)
FIR滤波器由于优良的线性相位特性以及其灵活、快速、稳定的特点,在多个领域都得到了广泛的应用。在图像处理等领域中,对于数据传输速度和稳定性的要求越来越高,导致其对FIR滤波器的运算速度和稳定性的要求也越来越高。根据了解,目前高速的FIR滤波器设计大部分是基于FPGA平台的,但是这种硬件平台虽然速度较快,但是其稳定性和精确度不高以及受环境影响较大,灵活性也较差。而DSP平台虽然稳定性和灵活性好,但是运算速度和实时性较差。鉴于这些特点,本文采用了在PowerPC硬件平台上,利用AltiVec向量加速技术提高运算速度以适应实时性的要求。
1 AltiVec技术简介
AltiVec技术是由美国APPLE公司、美国 IBM公司与美国 Motorola公司在 PowerPC G4系列微处理器中添加的多媒体处理指令集。AhiVec技术是对PowerPC指令集体系结构的扩展,其目的是提高PowerPC的向量处理能力以提供对多媒体处理的支持[1]。AltiVec技术能够通过运行一个指令处理多组数据,这种形式被称作SIMD并行处理。利用AltiVec的指令集可以显著提高复杂信号处理和大数据量运算的效率。AltiVec技术本身是一项通用技术,具有广泛的应用,只要数据是可并行处理的就可应用AltiVec技术。
该技术采用128位的数据宽度,所以提供了一个新的寄存器文件,包含32个128位的面向向量处理的寄存器。其128位数据宽度可分为16个字节、8个半字、4个字以及4个单精度浮点数。AltiVec技术增加了包括算术运算指令(整数或单精度浮点数乘积,加和等)、逻辑运算指令和内存操作指令在内的162条指令。除内存操作指令可以操作内存以外,其他指令的所有源操作数只可以是寄存器。指令根据它们如何处理矢量数据而分属两个组:元素内部操作和元素间操作。元素内部操作是从源寄存器的相同位置或地点获取元素,然后并行地处理它们,最后把结果放到目标寄存器的相同位置。元素间操作是从源寄存器中不同的位置获取元素,然后进行处理,最后把结果输出到目标寄存器的不同位置。改序指令和它的变异都执行元素间操作。
2 FIR滤波器的基本构造原理
假设一个N阶FIR滤波器的单位冲激响应序列为h(n)(n= 0 ,1,2,···,N- 1),输入信号为x(n),则FIR滤波器方程为:
y(n)为输出信号[2]。对式(1)进行Z变换,整理可得FIR滤波器的传递函数为:
在设计数字滤波器时,通常采用MATLAB来进行辅助设计和仿真,本文采用FDATool设计法设计一个FIR低通滤波器。FDATool(filter design & analysis tool)是MATLAB信号处理工具箱里专用的滤波器设计和分析工具,为滤波器设计提供了一个交互式的设计环境,用户可以根据对复制和零极点图的设置,设计几乎所有基本的常规滤波器,用来显示滤波器的各种特性;下半部分为参数设定区,用来设定滤波器的各种参数,包括滤波器的类型、设计方法、阶数、频率等。设计方法选择布莱克曼窗,根据设计需要的参数计算出滤波器的结束、过度带宽等,在FDATool界面上填好各种设计参数即可[3]。
3 FIR滤波器的软件实现
以简单的串行结构为例,在软件实现中,FIR滤波器是将待滤波的数据序列与滤波系数序列相乘后再相加运算,同时要模仿FIR结构中的延迟线将数据在存储器中滑动。在以往的通用器件进行此类乘加运算时,都会耗费大量的CPU资源和时间。在PowerPC平台上,AltiVec向量加速技术的特殊指令集包含乘法和加法的并行加速处理指令,这些指令的应用极大的提高了这些数学运算的计算速度[3]。
在实现N阶FIR滤波器时,常规的流程是:首先在数据存储区开辟 个单元的缓冲区,存放延迟移位后最新的 个采用值,计算每一个输出值,都需要读取这 个采样值并进行 次乘法和累加,每读完一个样值后,都将此样值向后移动,读完最后一个样值后,最后的样值被推出缓冲区,起始端又加入新的采样值。将之前计算出的滤波器系数存放在一个缓存区中,与开辟出的采用值进行运算。这种常规的流程每计算出一个输出值,都需要 次乘法和 次的加法。如果采用AltiVec向量加速技术,利用vec_madd和vec_sums指令和vec_add指令来将其中计算量最大的乘加运算进行加速,每个128位的向量单元可以一次装载16个不同的数,向量与向量间的每一个元素都进行运算,结果保存在一个向量相应的元素中,这样的一次运算与常规的一次运算所花费的时间是一样的,所以在完成相同的任务的情况下,向量运算单元比常规运算要快得多[3,5]。FIR滤波器的输出计算转换成运用AltiVec向量加速技术首先要对表达式进行数学变换,转换成可以方便用向量单元并行处理的方式。具体转换的原理图如图1所示。
假设N为4的倍数(如果不是,可以用添加零向量的方式补充),具体步骤如下:
1)设某时刻N个采用值向量为An= {a1,a2,a3,··,aN},滤波器系数为向量B= {b1,b2,b3, ···,bN},输出为y(n)(n= 0 , 1, 2, 3 · ··) ;
2)定义一个中间变量vet_temp = vector float{0.0, 0.0 , 0.0,0.0};
3)利用vec_madd指令计算出An于 对应元素的乘积与vet_temp的和,并将得到的值再赋给vet_temp。
图1 AltiVec加速滤波器设计原理Fig. 1 The design principle of AltiVec accelerating filter
4)重复3)的步骤,直至做完N个采样值为止,得到最后一个vet_temp,用vec_sums指令将vet_temp的4个元素加起来就得到了n时刻的输出y(n)。
主要部分的实现代码为:
另外,当对向量数据进行操作时,还必须注意对齐的问题。Altivec要求我们从某个缓冲区中将数据装入向量类型的变量的时候,缓冲区的地址必须是16位对齐的,否则装入的数据将会出错,而且系统不会报告错误。不过,系统提供了一系列的指令来解决这个问题,例如Altivec指令vec_ld。
4 实验结果及分析
应用AltiVec向量加速技术后,每次可以计算4个元素的乘法以及跟前面4个相乘的结果相加的运算,而常规的算法每次只能运算一个元素的乘法或者一次加法,运算效率比原来可以成倍的增加。为了验证前面所设计的AltiVec并行优化设计的加速效果,我们在真实的硬件平台上做了验证试验。试验平台是PowerPC 8641D系列[5-6]。MPC8641处理器家族建立在Power体系技术之上,集合一个或两个e600核,满足了网络,存储,无线设施,以及一般的嵌入式应用的系统逻辑需求。
我们在此平台上,分别对常规的C语言模式的代码和运用了AltiVec向量加速后的代码的运算数据量与运算时间的关系进行了测试,如图2所示。在图中可以看出,运算数据量小的时候,运用AltiVec技术优化的算法的效率比常规运算的效率提高不是很明显,这主要因为:首先,AltiVec技术的指令只能够处理寄存器间的运算,所以同常规算法相比要多出从存储器读入数据到寄存器和写寄存器中数据到存储器的指令;其次,考虑到AltiVec技术是16字节地址对齐的,程序在进行差分运算时,需要使用vec_ld函数来完成差分数据的装载,因此会多出相应时间;再次,AltiVec技术采用向量并行处理,一次运算4个数据,而对于数据总量不为4的整数倍的情况,程序中还要加入余数部分的处理代码。而随着运算数据量的增大,运用AltiVec技术优化的算法的优越性就大大的体现了出来,所以在大数据量FIR滤波器的信号处理系统中,AltiVec技术则发挥了重要的作用。
图2 优化前后性能比较Fig. 2 Performance comparison before and after optimization
5 结 论
本文研究了利用AltiVec向量加速技术对FIR滤波器设计进行了优化,并结合了基于PowerPC 8641D平台的实验系统对优化算法的运算时间进行了实验。实验表明,这种优化算法较之常规的算法,运算所耗时间随着数据量的增大,显著的减小,运算效率明显提高。对于并行结构的FIR滤波器,这种优化算法同样适用。而且这对利用AltiVec技术研究更加复杂的信号处理算法奠定了基础。
[1]Mark Slater.Vector Processing in the Motorola PowerPC 7400[Z].
[2]黄全振,李泉溪,陈中伟.基于TMS320C54X的FIR滤波器的系统设计及应用[J].河南理工大学学报,2008,27(3):314-318.
HUANG Quan-zhen,LI Quan-xi,CHEN Zhong-wei.The design and application of FIR filter based on TMS320C54X[J].Journal of Henan Polytechnic University,2008,27(3):314-318.
[3]Freescale. AltiVec Technology Programming Interface Manual[Z].
[4]赵秀玲,张利,武玉强.MATLAB辅助DSP实现FIR数字滤波器[J].现代电子技术,2007(9):38-40.
ZHAO Xiu-ling,ZHANF Li,WU Yu-qiang.Matlab Aia DSP in Approaching FIR Digital Filter[J].Modern Electronics Technique,2007(9):38-40.
[5]黄小平.基于AltiVec技术的向量处理单元的结构研究[D].西安:西北工业大学, 2006.
[6]马琳. PowerPC体系结构增加向量处理能力[J].今日电子,1998(10):7.
MA Lin. The ability of vector processing technology is increased by PowerPC processor[J]. Electronic Products China,1998(10):7.