Global Sources
電子工程專輯
 
電子工程專輯 > EDA/IP
 
 
EDA/IP  

可配置處理器進入音訊應用

上網時間: 2006年08月21日     打印版  Bookmark and Share  字型大小:  

關鍵字:DSP  可配置處理器  HiFi音訊引擎,FLIX  Xtensa  Xtensa HiFi 2 

電子化聲音重現可以追溯到Lee de Forest發明三極真空管的年代─1905年。可能很難相信,電子音訊技術在經歷一個世紀的大量開發後,依然持續發展,但是這種發展很大部份是透過使用越來越複雜的演算法,這些演算法在不斷擴展的數位音訊標準和應用中稱為編解碼器。

隨著越來越多的音訊產品數位化,更先進的音訊編解碼器技術容許進一步降低位元率,如此將可降低傳輸成本和儲存需求,以在可攜式和多用途設備上還原高傳真、多聲道的聲音。或許最有名的編解碼器是MP3編解碼器,目前廣泛應用在可攜式媒體播放器中。然而,像AC-3(杜比數位)、AAC、微軟的WMA、G.723和G.729語音編解碼器等目前都已獲得大量應用。幾乎當前設計的任何音訊電子產品都會使用到這些音訊編解碼器中的一種或幾種。

有四種不同的方法可以在產品中實現音訊編解碼器:以硬體邏輯實現、在通用處理器上執行軟體、DSP,或是專為音訊應用定製的可配置微處理器。這些設計方法都各自具有其優缺點。

對於某一種編解碼器,硬體編解碼器實現可能僅佔用少量硬體。然而,每個硬體音訊編解碼器都必須擁有自已的邏輯區塊,因此若多用途設備要實現數個硬體音訊編解碼器,將需要大量的硬體來實現數位音訊。而且,在矽晶片製造後,硬體編解碼器無法透過輕易修改來適應音訊編解碼器規格的改變或者更正錯誤設計。因此,這種方法通常適合於那些採用舊的、穩定的音訊編解碼器演算法的單一功能(單編解碼器)設備。

採用高速時脈

通用處理器常使用編解碼軟體來實現音訊標準,因為在足夠的執行週期下,它們可以實現任何可用程式描述的事情。採用足夠快的時脈,通用處理器可以實現多個編解碼器演算法,因此可用於需要適應幾種數位音訊標準的多用途設備。然而,通用處理器對執行音訊編解碼器來說並不是特別高效率的引擎,這些處理器需要更高的時脈速率來執行複雜的音訊編解碼器演算法,導致它們消耗的能量比採用音訊專用指令集的處理器更多。這對使用電池的可攜式設備來說是一個問題。

DSP通常比通用處理器執行音訊編解碼器的效率更高,可同時執行幾個軟體音訊編解碼器。然而,DSP並不擅長於實現針對控制的任務,因此DSP通常需要匹配一個控制處理器來設立一個具有滿足目前使用之終端產品需求的設計平台。這種雙處理器配置具有其自身的設計問題,因為兩個處理器的執行需要協調,這增加了軟體的複雜度;因為這兩個不同的處理器很可能需採用不相似的軟體開發工具,這又導致了軟體開發複雜化;由於每個處理器需要各自的儲存系統,這使系統設計複雜化,並導致產品成本增加;而每個處理器都消耗功率,這將難以獲得系統級功耗目標。

在SoC中實現音訊編解碼器的系統開發者現在有第四種選擇:針對應用定製的可配置處理器。可配置處理器最初是一種通用處理器,可執行任何軟體程式。然而,設計師可以透過對處理器增加特定應用的指令、暫存器和數據類型來對可配置處理器進行定製。這些處理器可擴展和加速目標應用以及類似應用的程式碼執行。像通用處理器和DSP一樣,對於多功能設備,可配置處理器可執行多個音訊編解碼器(可以是順序或平行執行),以時間多工的形式重覆利用處理器硬體。

Tensilica最初基於其可配置32位元Xtensa V處理器核心的HiFi音訊引擎是可配置處理器的例子,該處理器透過添加能加速編解碼器軟體執行的額外指令和暫存器,針對音訊應用進行了最佳化。最初的HiFi音訊引擎已經成功設計到行動電話和個人媒體播放器中,這些產品現已量產。隨後導入的Xtensa LX處理器核心透過利用其新特性提供了額外性能,預計將能改善設計。

一種穩定的平台

任何在SoC上用來實現音訊編解碼器的技術必須滿足多種要求,這通常會將這些技術引向全然不同的方向。任何可行的音訊編解碼器平台功耗必須很低,且矽晶片面積要小。每種軟體編解碼器需要較少的工作週期,以降低時脈速度(因而降低功耗),同時要讓在同一處理器上同時執行多個音訊編解碼器以及其他應用的能力最大化。

例如,行動電話開發者可能希望在一個音訊處理器上同時執行多達5個音訊編解碼器:用於鈴聲及其它可聽到的作業訊號的AAC解碼和MIDI合成,以作為後台任務執行的音樂壓縮和儲存時的MP3編碼,實際通話時的語音編解碼器。此外,在播放音樂的時候,行動電話可能需要同時執行兩個音樂解碼器以產生從一首歌的結尾到其開始部份的淡入淡出聲音過渡。如果要執行微軟的低位元率WMA編解碼器,全功能的音訊編解碼器平台還必須支援32位元精密度的運算,而多數軟體音訊解碼器僅使用24位元精密度的運算。

Xtensa LX可配置處理器核心具有可促進核心的增強音訊配置的兩個特性:功能性時脈閘控和靈活長度指令擴展(FLIX)。功能性時脈閘控功能透過逐週期地切斷時脈到在處理器管線中的靜態功能單元,減少了處理器的功率和能量消耗。FLIX指令擴展允許處理器在每個時脈週期中開始多個獨立的作業。儘管其前一代產品能用定製指令在每個時脈發起多個作業,Xtensa LX處理器的FLIX增強特性允許這多個作業相互獨立,並因此增加程式設計師使用不同作業組合的能力。

Xtensa HiFi 2音訊引擎擴展包含超過300個新的作業並配以兩個新的暫存器文件。暫存器文件分別為命名為‘P’的8計劃文件,每個計劃48位元(每個計劃可以容納兩個24位元值)和命名為‘Q’的四計劃文件,每個計劃56位元。56位元值由控制一個雙乘法/累加器(MAC)的指令集產生。這兩個管線乘法器中的每個都可以執行24x24位元或32x16位元的乘法,每個週期每個乘法器完成一次乘法運算。從兩個乘法器得到的56位元結果在Q暫存器中累加。300個Xtensa HiFi 2運算擴展依照表1分組。


表1:Xtensa HiFi 2音訊引擎的五個作業組

第一組包括實現雙MAC的運算。編解碼器使用這些指令來執行音訊串流在時域和頻域之間的轉換;開窗和頻帶分離;採樣率變換和開窗;像回響和三維聲音模擬的特殊效果。第二組包括移位作業-用於最大化Xtensa HiFi 2音訊引擎的定點運算動態範圍歸一化處理,這裡的定點運算包括執行在P和Q暫存器文件上的演算法函數以及雙MAC的56位元累加器。第三組包括Huffman編碼和解碼運算,用於靜噪編碼和解碼,以及從音訊位元串流中剔出未編碼位元,以用於音訊編解碼器演算法的不同部份。第四個作業組包括P、Q暫存器文件的變換、取整和截餘運算。這些作業還允許在P、Q暫存器文件以及處理器的基礎32位元AP暫存器文件之間交換數據。最後,第五組作業對儲存在48位元P暫存器文件內的一對24位元數據字執行雙向SIMD演算法和布爾函數。

不同於RISC處理器

對於任何應用(這裡是音訊)來說,對處理器增加300個指令都使得編譯的目標應用程式碼非常高效,但這不同於RISC的概念,其代價會非常高昂,而且在缺乏像用於建構微處理器核心的Xtensa Processor Generator及相關軟體開發工具等自動化工具情況下,這樣定製特定應用的處理器是不切實際的。

詳細介紹所有5個作業組中的300個作業指令會需要一篇很長的文章,但只要仔細觀察MAC作業組可以說明FLIX格式指令的靈活性。在這個組中的一個指令可以包含下面的函數:

1. 單或雙乘法;

2. 小數或整數演算法;

3. 24x24位元、16x16位元或32x16位元作業數;

4. 在有或無飽和下改寫、增加或減少累加;

5. 有符號或無符號數演算法。

建構複雜指令

圖1展示了Xtensa HiFi 2音訊引擎的指令格式。指令格式是寬度可變的,由兩個位置組成。基本的Xtensa LX RISC指令是16位元或24位元寬。某些Xtensa HiFi 2音訊引擎作業(特別是那些不使用P和Q暫存器文件的作業)還適合24位元指令格式。更多的複雜指令由兩個作業組成,因此採用了64位元、雙作業指令格式。雙作業位置提供了足夠的指令位元數來編碼所有的作業。即使有三種長度的指令,Xtensa處理器也能夠不受模式限制地處理不同長度的指令自由混合組成的指令串流,來使程式碼密度最大化。這樣,編譯器總是能選擇最小長度指令執行需要的工作,這樣一來可以獲得緊密的程式碼,而且避免了通常與多作業VLIW實現相關的程式碼膨脹問題。


圖1:Xtensa HiFi 2音訊引擎的16位元、24位元和64位元指令格式

圖2提供Xtensa HiFi 2音訊引擎的暫存器文件和數據路徑的簡化視圖,並經過組織來匹配圖1所示的雙位置的FLIX指令格式。16位元或24位元指令與更低的作業位置(稱為位置0)共享基本的處理器硬體(暫存器和管線)。如圖2所示,某些Xtensa HiFi 2音訊引擎的數據路徑擴展還駐留在位置0中。其餘的數據路徑擴展以及兩個新的暫存器文件(P和Q)佔用位置1。16位元和24位元指令只控制分配完整置0的資源,而64位元的指令可以控制圖2中所有的處理器資源。對於64位元的指令,駐留在64位元指令字中較低部份的作業控制分配給位置0的處理器資源,在指令字上部的作業(標記為作業1,如圖1所示)控制分配給位置1的資源。


圖2:Xtensa HiFi 2音訊引擎暫存器文件和數據路徑

實驗指導開發

使用不同軟體編解碼器所進行的實驗指導了Xtensa HiFi 2音訊引擎擴展的開發。因為Xtensa Processor Generator能在數分鐘內產生用於新處理器設計軟體開發工具套件,開發者在玩這種‘what if’的遊戲時非常容易,可以利用目標應用程式碼同時沿著幾個設計維度客觀地評估硬體的選擇。

例如,考慮幾種MAC單元配置的可選設計。在MAC單元裡的乘法器可以執行24x24位元或32x16位元運算。最後MAC單元可能具有一個或兩個乘法器。還考慮了一種允許兩個32x16位元乘法器作為一個32x32位元乘法器的配置。採用不同MAC配置的實驗產生了表2中的結果。


表2:Xtensa HiFi 2 MAC選項與實驗結果

根據表2中的結果,最終選擇了可以實現24x24位元和32x16位元運算的雙MAC配置,因為它提供了最好的音訊編解碼器性能,而且不會嚴重犧牲合成的處理器核心的最大時脈速率(這個時脈速率遠遠高於執行任何一個軟體音訊編解碼器所需的實際時脈速率,如表3所示)。


表3:選擇的Xtensa HiFi 2 的初步性能結果

這種高速的時脈頻率提供了很大的餘量,允許處理器在採用一個或多個音訊編解碼器的條件下,在SoC上平行執行幾種其它軟體任務。

對於幾種主要的音訊編解碼器,Xtensa HiFi 2音訊引擎的初步性能結果顯示在表3中,同時原來的Xtensa HiFi音訊引擎的性能結果也顯示在表中。在所有情況下,Xtensa HiFi 2音訊引擎都能獲得更好的性能。這並不是說原來的Xtensa HiFi音訊引擎表現糟糕。相反,它一直是具有競爭力的成功產品。但是Xtensa HiFi 2音訊引擎非常有效地利用了新的Xtensa LX FLIX特性,減少了音訊編解碼器軟體的週期數。

本文小結

實驗結果結合Xtensa LX可配置處理器特性,並採用Xtensa Processor Generator的快速周轉時間,產生了一種針對應用定製的處理器核心,這種核心能實現音訊編解碼器的卓越性能。執行每種音訊編解碼器所需要的週期數足夠低,處理器可以同時執行幾種軟體音訊編解碼器,並且依然有富餘的處理頻寬來執行其他應用任務。Xtensa處理器結合了Xtensa HiFi 2音訊擴展,保持了可配置性;它們還可以進一步進行配置和擴展以改善除了目標音訊編解碼器以外的其它軟體任務的性能。

基於Xtensa HiFi 2音訊引擎擴展的實際處理器配置消耗少於10萬個閘電路,在使用Artisan庫和130nm製程技術後,工作頻率接近300MHz。結合了Xtensa HiFi 2音訊引擎擴展的Xtensa LX處理器核心已經以SoC產品設計形式投片。最後,Xtensa HiFi 2音訊引擎擴展以TIE(Tensilica指令擴展)語言寫成。這些擴展的TIE程式碼可以被SoC開發團隊擴展、增強、裁剪,或者增加,以滿足每個SoC設計獨特的資源、功耗和性能要求。

作者:Robert Kennedy

高級軟體工程經理

Steve Leibson

技術講師

Tensilica公司




投票數:   加入我的最愛
我來評論 - 可配置處理器進入音訊應用
評論:  
*  您還能輸入[0]個字
*驗證碼:
 
論壇熱門主題 熱門下載
 •   將邁入40歲的你...存款多少了  •  深入電容觸控技術就從這個問題開始
 •  我有一個數位電源的專利...  •  磷酸鋰鐵電池一問
 •   關於設備商公司的工程師(廠商)薪資前景  •  計算諧振轉換器的同步整流MOSFET功耗損失
 •   Touch sensor & MEMS controller  •  針對智慧電表PLC通訊應用的線路驅動器
 •   下週 深圳 llC 2012 關於PCB免費工具的研討會  •  邏輯閘的應用


EE人生人氣排行
 
返回頁首