杜亞琦,周建英
(1. 通信信息控制和安全技術重點實驗室 浙江 嘉興314033;2.中國電子科技集團公司第三十六研究所 浙江 嘉興314033)
FIR濾波器由于優良的線性相位特性以及其靈活、快速、穩定的特點,在多個領域都得到了廣泛的應用。在圖像處理等領域中,對于數據傳輸速度和穩定性的要求越來越高,導致其對FIR濾波器的運算速度和穩定性的要求也越來越高。根據了解,目前高速的FIR濾波器設計大部分是基于FPGA平臺的,但是這種硬件平臺雖然速度較快,但是其穩定性和精確度不高以及受環境影響較大,靈活性也較差。而DSP平臺雖然穩定性和靈活性好,但是運算速度和實時性較差。鑒于這些特點,本文采用了在PowerPC硬件平臺上,利用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條指令。除內存操作指令可以操作內存以外,其他指令的所有源操作數只可以是寄存器。指令根據它們如何處理矢量數據而分屬兩個組:元素內部操作和元素間操作。元素內部操作是從源寄存器的相同位置或地點獲取元素,然后并行地處理它們,最后把結果放到目標寄存器的相同位置。元素間操作是從源寄存器中不同的位置獲取元素,然后進行處理,最后把結果輸出到目標寄存器的不同位置。改序指令和它的變異都執行元素間操作。
假設一個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]。
以簡單的串行結構為例,在軟件實現中,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。
應用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
本文研究了利用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.