嵌入式CPU幾乎隨處可見,因其具有靈活性、高效能、低功耗、和通常甚低的成本。與需要將單獨的微處理器或微控制器整合到自定義硬體解決方案相比,改採嵌入式CPU的設計是理所當然。但任何類型的CPU都有其侷限,即使我們可以將演算法轉移到軟體中,演算法也潛在無限的複雜性;雖然我們仍可以編寫及執行它們,但所需的時間和功率限制則不一定能夠被接受。

這就是為什麼微處理器廠商很快地提出了硬體加速器概念──硬體功能通常可以執行需要的任務,例如浮點運算比在CPU上執行之軟體要速度快很多。這個概念很快就被採用,其他加速器開始出現,對於密碼使用法、常規運算式處理、圖形功能來說只是幾個例子。

此一概念效能顯著,但喪失了基於軟體解決方案中彈性的重要趨勢,因大部分都是以硬編碼的方式完成。這樣的加速器可用控制暫存器的方法進行有限度的調整,但若要修改錯誤或變更演算法,則必須重新設計硬體,因此相應於現場故障和不斷發展的市場需求,其代價變得無比昂貴。

我們真正想要的是兩全其美-一種兼顧演算法速度,同時仍能夠在軟體中定義演算法的機制。當然,演算法的潛在範圍是無限的,所以不太可能有一種解決方案能解決所有情況。但對於許多極常用的功能,DSP確實是一個魚與熊掌兼得的神奇解決方案。

考慮幾乎所有必須處理串流數據的操作。音訊處理中,從過濾到PDM-PCM轉換到回音消除,都有明顯的例子;或考慮有關密碼功能有SNOW和ZUC (用於LTE)等串流式加解密;訊號處理環境中有基地台與手機之間的通道估計,其目的是在於最佳化當前條件下的傳輸以達成最大的可靠性,並對接收訊號進行複雜的矩陣計算;或更廣泛地說,考慮任何可以從非常廣泛的平行性中受惠的應用程式,如AES加解密等應用。

串流運算、複雜的數學運算(矩陣、浮點)、和/或高度平行性,這些都是DSP的亮點,且必須認真考慮將其視為硬體加速器替代方案的領域。在多數情況下,DSP建置都會比硬體加速器更小,從而降低產品的單位成本。

功率方面,也許加速器將略低於DSP執行,但DSP功率仍將遠低於基於CPU的同類產品。更好的是,如果不需要同時執行多個加速器,則可以將多個加速器功能整合到單一DSP,如此就無需使用多個加速器。或者,您可以使用多核心DSP,就像使用多核心CPU一樣。

最重要的是,DSP建置就像CPU核心一樣可用C語言編程。雖然平行性最佳化等細節會有差異,但一套良好的DSP編譯器和建模模擬器將會降低不少處理這些差異的困難度。所以您無需修改底層硬體就可以獲得修護錯誤和產品升級的所有優勢,還能提高客戶滿意度及提高營收-確實不錯。

還有另一個優勢──DSP既然是一種處理器,就可以支持多種功能。以GNSS為例,這個全球定位標準且大幅受惠於基於DSP運算的功能,當然是行動裝置中一個良好的功能,但現在也有固定設備開始大量採用GNSS,以簡化配置、更新和維護。如果您的裝置已啟用了DSP,則GNSS可能是某些供應商提供的軟體外掛,且可在其他功能處於休眠狀態時安靜地運行。如已有基於硬體的GNSS或計劃添加一個,則可以縮小面積、降低功率。

我並不是說DSP建置會取代全部的硬體加速器。某些加速器功能可能不太適合DSP的優點,或只能取代且限於某些部分,例如對於非常大的濾波器,您唯一的選擇可能仍然只能採用硬體建置。除此之外,對許多其他功能,DSP在性能和功耗上都能媲美等效的硬體加速器,實際的成本可能更低,並且比硬體版本具有無限的靈活性,是值得考慮。

本文中文版由CEVA提供

(參考原文: When a DSP beats a hardware accelerator,by Guy Givoni)