摘要
有限脈沖響應(FIR)和無(wú)限脈沖響應(IIR)濾波器都是常用的數字信號處理算法---尤其適用于音頻處理應用。因此,在典型的音頻系統中,處理器內核的很大一部分時(shí)間用于FIR和IIR濾波。數字信號處理器上的片內FIR和IIR硬件加速器也分別稱(chēng)為FIRA和IIRA,我們可以利用這些硬件加速器來(lái)分擔FIR和IIR處理任務(wù),讓內核去執行其他處理任務(wù)。在本文中,我們將借助不同的使用模型以及實(shí)時(shí)測試示例來(lái)探討如何在實(shí)踐中利用這些加速器。
簡(jiǎn)介

圖1.FIRA和IIRA系統方框圖
圖1顯示了FIRA和IIRA的簡(jiǎn)化方框圖,以及它們與其余處理器系統和資源的交互方式。
· FIRA和IIRA模塊均主要包含一個(gè)計算引擎(乘累加(MAC)單元)以及一個(gè)小的本地數據和系數RAM。
· u 為開(kāi)始進(jìn)行FIRA/IIRA處理,內核使用通道特定信息初始化處理器存儲器中的DMA傳輸控制塊(TCB)鏈。然后將該TCB鏈的起始地址寫(xiě)入FIRA/IIRA鏈指針寄存器,隨后配置FIRA/IIRA控制寄存器以啟動(dòng)加速器處理。一旦所有通道的配置完成,就會(huì )向內核發(fā)送一個(gè)中斷,以便內核將處理后的輸出用于后續操作。
· u 從理論上講,最好的方法是將所有FIR和/或IIR任務(wù)從內核轉移給加速器,并允許內核同時(shí)執行其他操作。但在實(shí)踐中,這并非始終可行,特別是當內核需要使用加速器輸出進(jìn)一步處理,并且沒(méi)有其他獨立的任務(wù)需要同時(shí)完成時(shí)。在這種情況下,我們需要選擇合適的加速器使用模型來(lái)達到最佳效果。.
在本文中,我們將討論針對不同應用場(chǎng)景充分利用這些加速器的各種模型。
實(shí)時(shí)使用FIRA和IIRA

圖2.典型實(shí)時(shí)音頻數據流
圖2顯示了典型實(shí)時(shí)PCM音頻數據流圖。一幀數字化PCM音頻數據通過(guò)同步串行端口(SPORT)接收,并通過(guò)直接存儲器訪(fǎng)問(wèn)(DMA)發(fā)送至存儲器。在繼續接收幀N+1時(shí),幀N由內核和/或加速器處理,之前處理的幀(N-1)的輸出通過(guò)SPORT發(fā)送至DAC進(jìn)行數模轉換。
加速器使用模型
如前所述,根據應用的不同,可能需要以不同的方式使用加速器,以最大限度分擔FIR和/或IIR處理任務(wù),并盡可能節省內核周期以用于其他操作。從高層次角度來(lái)看,加速器使用模型可分為三類(lèi):直接替代、拆分任務(wù)和數據流水線(xiàn)。
直接替代
· 內核FIR和/或IIR處理直接被加速器替代,內核只需等待加速器完成此任務(wù)。
· 此模型僅在加速器的處理速度比內核快時(shí)才有效;即,使用FIRA模塊。
拆分任務(wù)
· FIR和/或IIR處理任務(wù)在內核和加速器之間分配。
· 當多個(gè)通道可并行處理時(shí),此模型特別有用。
· 根據粗略的時(shí)序估算,在內核和加速器之間分配通道總數,使二者大致能夠同時(shí)完成任務(wù)。
· 如圖3所示,與直接替代模型相比,此使用模型可節省更多的內核周期。
數據流水線(xiàn)
· 內核和加速器之間的數據流可進(jìn)行流水線(xiàn)處理,使二者能夠在不同數據幀上并行處理。
· u 如圖3所示,內核處理第N個(gè)幀,然后啟動(dòng)加速器對該幀進(jìn)行處理。內核隨后繼續進(jìn)一步并行處理加速器在上一迭代中產(chǎn)生的第N-1幀的輸出。該序列允許將FIR和/或IIR處理任務(wù)完全轉移給加速器,但輸出會(huì )有一些延遲。
· u 流水線(xiàn)級以及輸出延遲都可能會(huì )增加,具體取決于完整處理鏈中此類(lèi)FIR和/或IIR處理級的數量。
圖3說(shuō)明了音頻數據幀如何在不同加速器使用模型的三個(gè)階段之間傳輸---DMA IN、內核/加速器處理和DMA OUT。它還顯示了通過(guò)采用不同的加速器使用模型將FIR/IIR全部或部分處理轉移到加速器上,與僅使用內核模型相比,內核空閑周期如何增加。

圖3.加速器使用模型比較
SHARC處理器上的FIRA和IIRA
以下ADI SHARC®處理器系列支持片內FIRA和IIRA(從舊到新)。
· ADSP-214xx (例如, ADSP-21489)
· ADSP-SC58x
· ADSP-SC57x/ADSP-2157x
· ADSP-2156x
這些處理器系列:
· 計算速度不同
· 基本編程模型保持不變,ADSP-2156x處理器上的自動(dòng)配置模式(ACM)除外。
· FIRA有四個(gè)MAC單元,而IIRA只有一個(gè)MAC單元。
ADSP-2156x處理器上的FIRA/IIRA改進(jìn)
ADSP-2156x是SHARC處理器系列中的最新的產(chǎn)品。它是第一款單核1 GHz SHARC處理器,其FIRA和IIRA也可在1 GHz下運行。ADSP-2156x處理器上的FIRA和IIRA與其前代ADSP-SC58x/ADSP-SC57x處理器相比,具有多項改進(jìn)。
性能改進(jìn)
· 計算速度提高了8倍(從SCLK-125 MHz至CCLK-1 GHz)。
· 由于內核和加速器借助專(zhuān)用內核結構實(shí)現了更緊密的集成,因此減少了內核和加速器之間的數據和MMR訪(fǎng)問(wèn)延遲。
功能改進(jìn)
添加了ACM支持,以盡量減少進(jìn)行加速器處理所需的內核干預。此模式主要具有以下新特性:
· 允許加速器暫停以進(jìn)行動(dòng)態(tài)任務(wù)排隊。
· 無(wú)通道數限制。
· 支持觸發(fā)生成(主器件)和觸發(fā)等待(從器件)。
· 為每個(gè)通道生成選擇性中斷。
實(shí)驗結果
在本節中,我們將討論在A(yíng)DSP-2156x評估板上,借助不同的加速器使用模型實(shí)施兩個(gè)實(shí)時(shí)多通道FIR/IIR用例的結果
用例1
圖4顯示用例1的方框圖。采樣率為48 kHz,模塊大小為256個(gè)采樣點(diǎn),拆分任務(wù)模型中使用的內核與加速器通道比為5:7。
表1顯示測得的內核和FIRA MIPS數量,以及與僅使用內核模型相比獲得的節約內核MIPS結果。表中還顯示了相應使用模型增加的額外輸出延遲。正如我們所看到的,使用加速器配合數據流水線(xiàn)使用模型,可節約高達335內核MIPS,但導致1塊(5.33 ms)的輸出延遲。直接替代和拆分任務(wù)使用模型也分別可節約98 MIPS和189 MIPS,而且未導致任何額外的輸出延遲。

圖4.用例1方框圖
表1.用例1的內核和FIR/IIRA MIPS總結
|
使用模型
|
內核 MIPS
|
FIRA MIPS
|
IIRA MIPS
|
節約內核MIPS
|
使用模型延遲(ms)
|
僅使用內核
|
337
|
|
|
|
0
|
直接替代
|
239
|
162
|
75
|
98
|
0
|
拆分任務(wù)
|
148
|
96
|
44
|
189
|
0
|
數據流水線(xiàn)
|
2
|
161
|
75
|
335
|
5.33 (1幀)
|
用例2
圖5顯示用例2的方框圖。采樣率為48 kHz,模塊大小為128個(gè)采樣點(diǎn),拆分任務(wù)模型中使用的內核與加速器通道比為1:1。
與表1一樣,表2也顯示了此用例的結果。正如我們所看到的,使用加速器配合數據流水線(xiàn)使用模型,可節約高達490內核MIPS,但導致1模塊(2.67 ms)的輸出延遲。拆分任務(wù)使用模型可節約234內核MIPS,而沒(méi)有導致任何額外輸出延遲。請注意,與用例1中不同,在用例2中內核使用頻域(快速卷積)處理,而非時(shí)域處理。這就是為何處理一個(gè)通道所需的內核MIPS比FIRA MIPS少的原因,這可導致直接替代使用模型實(shí)現負的內核MIPS節約。

圖5.用例2方框圖
表2.用例2的內核和FIR/IIRA MIPS總結
|
使用模型
|
內核MIPS
|
FIRA MIPS
|
節約內核MIPS
|
使用模型延遲(ms)
|
僅使用內核
|
493
|
|
|
0
|
直接替代
|
515
|
511
|
–22
|
0
|
拆分任務(wù)
|
259
|
257
|
234
|
0
|
數據流水線(xiàn)
|
3
|
511
|
490
|
2.67 (1幀)
|
結論
在本文中,我們看到如何利用不同的加速器使用模型實(shí)現所需的MIPS和處理目標,從而將大量?jì)群薓IPS轉移到ADSP-2156x處理器上的FIRA和IIRA加速器。 |