ARM Cortex-M的音頻性能解析
由此誕生了Cortex-M系列,這是新一代ARM低成本微處理器,采用低功耗設計。Cortex-M3內核和較近發布的Cortex-M4內核基于哈佛架構的3級流水線并采用Thumb-2指令集架構(ISA),內存要求更低。但這些MCU能否勝任音頻處理任務?它們能否打造更出色的傾聽體驗,滿足人們的期望?
為了分析這些處理器是否適合處理音頻,首先我們以MP3解碼器和均衡器為例,大致了解一下音頻解碼器和后處理等音頻部件中常用音頻處理模塊實施方案,然后按照高效實現這些模塊對處理器指令集架構的要求,對模塊加以分類。
我們重點從指令集角度來探討Cortex-M3和Cortex-M4內核在音頻處理方面的優勢。為此,我們先討論不同音頻部件的一些模塊代碼示例,隨后分析這些處理器在循環和指令方面的獨到優勢,較后,將展示流行音頻編解碼器和音頻后處理部件的典型性能指標以佐證這些處理器內核的音頻能力。
音頻處理模塊的功能塊
為了分析音頻處理器要求,現先從音頻處理模塊所涉及的功能塊,即音頻編解碼器和音頻后處理部件談起。本節框圖中的模塊用顏色標為3種不同類別。綠色表示乘加(MAC)密集模塊、紅色表示MAC和控制代碼混合模塊、藍色表示控制代碼模塊。
音頻編解碼器
互聯網提供了大量壓縮音頻數據,必然要求音樂播放器支持多種流行的音頻解碼器。音頻編碼器的處理功能涉及一系列功能塊,我們接下來回顧一下。
圖1:典型音頻編碼器框圖。
音頻編碼器:音頻編解碼器的用途是實現音頻數據壓縮,同時在給定比特率的限制下努力獲得保真音質。典型編碼器如圖1所示。一般來說,音頻編碼器采用如下三步完成壓縮:首先,通過數據濾波調節音頻數據。然后,通過窗口化和重疊對音頻數據進行幀化,等待進一步處理;接著,將此數據變換至頻域,消除時域內的冗余。使用心理聲學原理,對可能引入的、聽不見的量化噪聲數量進行計算;較后,對此數據進行量化并通過熵編碼實現進一步無損壓縮。此編碼數據經緊密打包成為位流。盡管所實現的壓縮有些損耗,但聽覺難以分辨細微差別。
音頻解碼器:將上述關于音頻編碼器的過程反向,即是音頻解碼器從位流中還原音頻數據的原理。這里以MP3解碼器為例進行討論,高層模塊分解如圖2所示。框圖以MP3文件格式的壓縮音頻作為輸入并輸出PCM格式的非壓縮音頻。
這些模塊以功能命名,并代表各自執行的操作
圖2:MP3解碼器框圖。
“Bit Stream Demux”模塊解析MP3位流
“Entropy&Inv Q”模塊執行霍夫曼解碼和反向量化
“IMDCT”模塊對此數據進行反向修改離散余弦變換
“Overlap and Add”模塊執行窗口化、重疊和加法運算
“Synthesis Filter Bank”從濾波器組域數據中重構時域樣本
音頻后處理
兩種情況一定需要音頻數據后處理。首先,要求提供豐富的聆聽體驗。例如,可使用立體聲加寬等空間定位器(Spatializer)來消除長時間使用耳機的聽覺疲勞。即使是基本的音頻播放,也需要后處理。例如,音樂播放器的DAC如果僅支持有限系列采樣率的情況下,可能需要對音頻數據進行重新采樣。
圖3:均衡器框圖。
我們以均衡器為例,探討后處理器中用到的典型模塊。均衡器一般是為了滿足聆聽者的偏好,同時也可用于校正耳機或揚聲器的頻響。圖3所示為基本參數均衡器的高層模塊分解。下列模塊用于僅修改一小段音頻頻譜,具體做法是利用增益值、帶寬和中心/截止頻率的可控參數提供增益或衰減。要獲得所需頻響,可將多個此類二階IIR濾波器級聯。
低頻(LF)斜率濾波器:一種用于修改音頻頻譜低音部分的濾波器
峰化濾波器:一種用于修改音頻頻譜中頻范圍的濾波器
高頻(HF)斜率濾波器:一種用于修改音頻頻譜高音部分的濾波器
音頻處理模塊類別
根據特性,音頻處理模塊廣義上分為三類。我們將詳細討論每種模塊及其特性,然后進一步分析高效實現這些模塊對處理器的要求。表1概述了本節所述音頻處理的處理器要求。
表1:音頻處理模塊及其處理器要求。
MAC密集模塊
這些模塊屬于計算密集型,主要執行乘加(MAC)運算,通常有一個預定的代碼流。濾波(FIR、IIR濾波器)、窗口化、相關性及卷積等信號處理運算屬于此類別的典型例子。此類模塊的處理器要求稍后論述。
高精度MAC:這些模塊正常工作需要高精度乘加法。例如,IIR濾波器的穩定性要求高精度運算。輸出的保真度和精度直接取決于MAC指令的精度。盡管可使用低精度指令來某些仿真高精度MAC指令(例如32位乘以32位,在64位結果內累加),但較好是使用高精度MAC指令來獲得高效實現。
SIMD能力:這些模塊內的運算往往是少量指令的反復執行,從而產生精簡循環內核。單指令多數據(SIMD)能力對于此類模塊的高效執行較為理想。內置此功能的處理器更有利于處理此類模塊。
飽和算法:某些運算需要使用飽和算法。例如,當在運行時產生窗口系數或在產生PCM輸出數據到所需位寬時。針對飽和算術的需求可以減少,但無法完全避免,因為中間結果的位寬更高。因此,支持飽和算法的指令是高效實現的理想之選。
分支推測:這些模塊有一個預定的代碼流。由于這些模塊需要對指令反復執行運算,簡單的分支推測有利于減少因流水線清空所產生的開銷。
MAC和控制代碼混合模塊
這些模塊同樣是計算密集型,但在MAC密集運算中還涉及控制代碼運算。快速傅里葉變換(FFT)、濾波器組等變換運算是這一類型的典型例子。此類模塊的處理器要求為:
DSP指令:由于上述兩類模塊(MAC密集模塊和MAC和控制代碼混合模塊)主要涉及MAC運算,因此,如果只有MAC和MLS(乘法和減法)指令而無運算累加的開銷,一定能提高效率。
混合位寬運算:運算對象的較小位寬取決于各種因素。例如,在濾波運算中,輸出精度和濾波器穩定性決定濾波器系數的位寬。所以高效實現離不開能夠處理混合位寬運算對象的指令。
壓縮數據處理:FFT等這類模塊的運算一般使用稱為旋轉因子的16位系數。FFT基數越高,所涉及的旋轉因子越多,但相對復雜度越低。這些旋轉因子可通過打包成32位數據來降低內核循環中的任何寄存器不足。或者可通過將旋轉因子載入到內核循環以外的寄存器來避免重復負載的可能開銷。因此,能夠運算壓縮數據的指令是提高效率的理想之選。
位反轉:能夠執行位反轉的指令有利于需要位反轉尋址的FFT等關鍵模塊。
控制代碼模塊
這些模塊主要涉及控制代碼且代碼流為數據依賴型。位流解復用器和熵解碼運算就屬于此類。例如,MP3解碼器采用霍夫曼解碼,而WMA解碼器采用游程解碼。接下來討論此類模塊的處理器要求。
無符和按位運算:這些模塊需要處理打包的數據流,而這需要數據提取。因此,能夠執行按位運算、提取、打包、解包的指令和能夠處理無符運算對象的指令都是高效實現所需要的。
精簡數據,減少占位:這些模塊中的代碼流主要為數據依賴型,因此不是預定的。所以,精簡數據大小有助于減少緩存清空所引起的任何開銷。
ARM Cortex-M3和Cortex-M4處理器
本節將探討ARM低功耗高性能微控制器Cortex-M3內核的功能,然后討論Cortex-M系列的較新處理器內核M4的功能。Cortex-M系列內核的功能及示例指令和循環如表2所列。
Cortex-M3功能:采用高精度MAC單元,可提供較高32位乘以32位數據的乘法精度,得出64位累加結果。其他有利功能包括DSP指令、范數計算輔助指令、分支推測、因Thumb-2的高代碼密度以及硬件除法指令。這些功能都有利于音頻處理。
Cortex-M4功能:Cortex-M4內核是Cortex-M3的升級產品,除了繼承全部現有功能外,還增加了單循環MAC單元和浮點單元(FPU)等額外功能。MAC單元只需要1個循環,即使對于較高精度運算也是如此,將32位乘以32位,得出64位累加結果。增加了具有SIMD功能的DSP指令和高精度MAC單元等新功能,Cortex-M4就是一種具有DSP功能的微控制器,即數字信號控制器(DSC)。這些功能對于音頻處理非常有利,因為需要高精度來保持透澈的音質。
相關閱讀:
- ...2017/07/04 14:36·增強版ARM DesignStart:通向定制化SoC的較快、較低風險之路
- ...2014/06/06 10:19·研祥ARM工業平板電腦助力高端汽車制造
- ...2014/04/11 15:52·研祥ARM工業平板電腦在電動汽車充電樁中的應用
- ...2012/03/31 14:49·實現基于ARM的嵌入式系統的SoC方法
- ...2012/03/26 14:07·基于uC/OSII的ARM9引導程序設計與實現
- ...2012/03/14 14:36·基于ARM處理器的單目視覺測距定位系統
- ...· Efinix® 全力驅動AI邊緣計算,成功推出Trion™ T20 FPGA樣品, 同時將產品擴展到二十萬邏輯單元的T200 FPGA
- ...· 英飛凌亮相進博會,引領智慧新生活
- ...· 三電產品開發及測試研討會北汽新能源專場成功舉行
- ...· Manz亞智科技跨入半導體領域 為面板級扇出型封裝提供化學濕制程、涂布及激光應用等生產設備解決方案
- ...· 中電瑞華BITRODE動力電池測試系統順利交付北汽新能源
- ...· 中電瑞華FTF系列電池測試系統中標北京新能源汽車股份有限公司
- ...· 中電瑞華大功率高壓能源反饋式負載系統成功交付中電熊貓
- ...· 中電瑞華國際在電動汽車及關鍵部件測評研討會上演繹先進測評技術