DSP+FPU給MCU架構設計帶來的新思路
自從MCU(微控制器)導入了DSP(數字信號處理器)與FPU(Floating Point Unit;浮點運算單元)功能后,MCU可以拓展的應用范圍便大幅增加,這幾年來,諸多MCU大廠都紛紛導入,使得MCU市場戰局變得更加詭譎多變。各家大廠就MCU的產品策略也不盡相同。
本文引用地址:http://www.j9360.com/article/201609/303346.htm然而,盡管應用面大幅增加,但DSP與FPU在功能上要如何區分?彼此的關系是什么?這在ARM推出了Cortex-M4后,這類的議題才開始漸漸被市場所重視。
瑞薩電子營業行銷事業部第一營業行銷部副理黎柏均表示,其實FPU的導入,還是要考量成本的問題,若不需要,其實采用定點運算的MCU來因應系統需求即可。一般來說,SOC(系統單芯片)才會有所謂的DSP與FPU這類硬體加速器,其主要的功能大多負責影像或是音訊處理的工作,但隨著制程的進步,MCU在32位元架構也日趨成熟,所以MCU就開始能沿用SOC的部份功能,并進一步拓展MCU的應用范圍。黎柏均更直言,在早期,SOC與MCU之間有不小的價格差距。

圖1 : SOC本身就具備一定的DSP與FPU的功能,價格上也比MCU來得昂貴。(攝影:姚嘉洋)
不過,黎柏均認為,在現有市場所存在的MCU產品,即便主要供應商都能提供FPU的功能,但事實上,各家大廠的產品之間并沒有什么距離,關鍵最多就是在程式的執行效率上,能否形成差異。在過去,若要由定點運算架構的MCU來處理FPU的工作,會多出不少時間出來,而且也需要大量的記憶體資源,但有了 FPU的導入后,其目標程式碼就能夠縮小,記憶體容量也能減少10%。換言之,若沒有時間上的考量,MCU是否要導入FPU,嚴格來看,并沒有太大的差別存在。TI(德州儀器)亞洲區市場開發經理陳俊宏也同意,利用定點運算的MCU來處理FPU要處理的工作,也并非不行,但就是需要耗費大量的記憶體資源與長時間的等待,來取得所要的運算結果,FPU的存在,就是要避免這樣的情況出現。
不論是從ARM或是TI,這些大廠對于DSP與FPU的看法,
仍然有一些差異存在,但也因此,讓MCU市場形成了多元并陳的景象。
在過去,傳統的8位元架構,在資料處理上仍然有其極限存在,陳俊宏指出,傳統的定點運算MCU在進行所謂的分數或是小數點計算,因為MCU本身的位元數有限,在面臨無法除盡而形成無窮數值(如1/3或是3/7等)的計算上,就必須有所取舍,在位元數有限而采取的有限數值,勢必與現實計算上而形成的數值產生一定的誤差,這種情形我們稱為:截斷誤差。在這種情況下,若要利用傳統MCU的處理器核心來處理分數運算,只會造成截斷誤差的不斷擴大。為了有效處理截斷誤差不斷擴大的問題,便有了FPU的出現。
回顧MCU的發展歷程,從傳統的8位元架構一路發展至今,已經進入到可以采用FPU與DSP等功能。之所以會有如此的進化,主因來自于從類比端擷取資料后,轉換成數字化,將「連續型」資料轉為「離散型」資料」以利于處理器進行運算。

圖2 : MCU的世界中,截斷誤差一直存在著,若要考量到高精度,如何減少截斷誤差的現象,就成了大家努力的方向之一。(Source:www.youtube.com)
陳俊宏談到,FPU并不能完全解決截斷誤差不斷擴大的現象,精確地說,只能將該現象盡可能地減少。陳俊宏進一步指出,從TI的角度來看,DSP要處理運算種類相當多種,所以需要更多的工具來處理不同需求。
延續陳俊宏的論述,Imagination MIPS業務開發資深經理Ian Anderton也指出,DSP可利用乘法/累加(MAC)指令、飽和、舍入和位元操作來執行多種數學運算─ 這些都是快速傅立葉轉換(FFT)和有限脈沖響應(FIR)等高效過濾器開發所需的基本功能。DSP同時也能支援并執行多種應用中所使用的8、16和32 位元整數與分數資料長度。透過單周期MAC指令、SIMD(單一指令多重資料)和特殊的位元操作,DSP效能還可獲得進一步的增強。
FPU與DSP的相輔相成
ST(意法半導體)資深產品行銷經理楊正廉則是談到,針對訊號處理、數值運算與對應到各種應用的演算法,DSP與FPU某程度上,是相輔相成的角色,很難被加以拆分。當然,他也表示,ARM所推出的Cortex-M4核心,也有僅搭載DSP而沒有FPU的版本,但若要讓客戶能發揮更多的創意,那么就架構上就一次到位,也能省去不少不必要的麻煩。

圖3 : 某程度上,一次提供到位的硬體資源,工程師可以發揮更多的創意與想法。(Source:www.access2knowledge.org)
呼應楊正廉的說法,ARM臺灣應用工程經理徐達勇指出,從應用面來說,楊正廉的看法并沒有問題。當然,FPU與DSP各自也有其定位。徐達勇舉例:0.8+0.5=1.3,這種運算工作就是由FPU來負責,但是如果要同時計算:「0.8+0.5=?與1.3+0.9=?」的話,就必須借重DSP 的運算功能,所以FPU與DSP的密不可分,的確有其道理。楊正廉表示,廣義來看,讓MCU具備DSP與FPU功能,主要的目的在于能讓MCU的客戶群能夠享受到DSP與FPU帶來的功能與便利性,而過往采用DSP架構的客戶群,也能有機會轉移到MCU平臺。
Ian Anderton也從應用面出發,并以感測器融合(Sensor Fusion)為例,感測器融合是指把多個感測器結合在單一系統中共同運作。它需要高階的訊號處理功能,才能把訊號從嘈雜的環境中區隔出來。感測器融合可提供即時校正與調整控制,這是一種有限時間(time-limited)的應用,僅能透過利用DSP和FPU的協同處理功能來實現高效、高精密度的計算。此外,包括加速器、陀螺儀、壓力/溫度/觸控等各種感測器,以及其他擁有個別控制/管理演算法的感測器也增加了更多的挑戰,必須采用DSP/FPU才能設計出高效的系統。
評論