微控制器(MCU)正在變得越來越復雜,越來越強大,因而越來越有用。但是這些進步都是都代價的。
開發帶高級電源管理功能的多核MCU硬件并不太難,由于存儲器的限制,開發出適合多核MCU的軟件則難得多。CPU系統可以用SRAM片上存儲器,或者外部的DRAM。不過對MCU系統而言,所有的存儲器都在片上。所以CPU系統可以跑大型的Linux或Windows操作系統,MCU則只能跑相對簡單的實時操作系統。
“以視頻市場為例,你可以開發基于MCU的應用,也可以開發基于CPU的應用,甚至可以開發兩種系統都能跑的應用,”Cadence IP事業部CTO Chris Rowen說,“使用MCU的視頻分辨率更低,不論是CPU方案還是MCU方案,多樣化的視頻接口都會讓設計變得復雜。用CPU系統開發要求相對沒那么嚴,例如你可以把整個緩沖區(buffer)寫滿,在MCU就不太可能這么干。用MCU開發,數據的交換更需要技巧,所以產生故障(bug)的可能性也增加了。”
更難的是利用MCU來分擔CPU的負擔,例如作為協處理器去加速某種計算,或者作為低功耗應用時的備用處理器。
“考驗MCU的程序員的問題是如何滿足處理速度的要求,” Rowen說,“自動車庫門開啟或者關閉花費幾百毫秒都可以接受,但要滿足高速數據流的處理需求,則須采用并行處理。所以當把MCU設計成另一個次級計算引擎(sub-engine)時,你需要處理器有能力進行數據計算,這就要求編程風格非常嚴謹。在高速數據處理場景下使用MCU,非常非常難。”
雖然有諸多困擾,MCU的應用場景不斷拓展,使用方法也屢屢突破常規,如今在復雜的系統及芯片(SoC)中內建MCU已經很常見。在SoC這種復雜應用場景中,MCU的功能一般都只做特定的任務,例如喚醒CPU,但無論從設計、驗證還是一致性的角度來看,在SoC中讓多個MCU協同工作都非常難。
“在同一顆SoC中集成Cortex A(CPU)與Cortex M(MCU)的趨勢呈現加速狀態,”Mentor Graphics嵌入式產品高級產品線經理Andrew Caples說,“以高級駕駛輔助系統(ADAS)這個嵌入式應用最精華的代表為例,可以用多個處理單元--微控制器(MCU)、微處理器(MPU)、數字信號處理器(DSP)--來實現ADAS,SoC意味著更低的故障率、更低的成本以及更低的散熱需求,但增加了軟件設計的復雜性。開發人員要在SoC集成的MCU、MPU與DSP上開發多個實時操作系統,并在這一顆芯片上開發和調試。這就需要開發人員的方案能夠適應不同的平臺(MCU、MPU、DSP),這給半導體公司增加了很多壓力,為了幫助客戶真正利用起SoC中的所有器件,它們需要提供給開發者足夠的庫文件和解決方案參考。”
Caples表示只要多核SoC的應用有操作系統,就一定會遇到一堆同步問題,因為不同核之間靠等待來協同工作。“我們正在為這個領域的應用開發工具,”他說,“對于硬件工程師來說,過去這些年摩爾定律一直很有效,硬件的性能在提升,成本在下降。但是軟件開發卻是另外一回事,隨著系統復雜度越來越高,軟件開發的成本不斷攀升,而且現在看不到任何可以改善的跡象。”
歡迎來到MCU時代
雖然存在上述挑戰,但隨著物聯網的發展,物與物之間的通信越來越多,因此開發人員希望MCU在復雜系統中發揮越來越重要的的作用。相比CPU,M的功耗更低,價格也更便宜。一方面,8位MCU在一些簡單任務處理中仍然不可或缺;另一方面,32位甚至64位多核MCU已能應對很多復雜應用。所有這些MCU都可以與CPU或GPU集成在同一顆SoC里面,這樣CPU或GPU可以在多數時間里面處于休眠狀態。
“MCU越來越復雜,”ARM建模技術總監 Bill Neifert說,“引入32位微控制器以后,人們開始問可以用這些MCU做什么。”
MCU當然不只用在汽車的安全領域,從工業設備到智能拖鞋這種消費類產品都可以用到MCU。以監控人是否滑倒的智能拖鞋為例,低成本、低功耗的嵌入式處理器(MCU)就非常適合,因為其可以為某種應用定制。
“每個人都想要最有效的解決方案,定制化的MCU在成本和功耗上都優于通用產品,”Neifert說,“特別是物聯網設備,很多都是電池供電,因此對與功耗非常敏感。用戶希望能找到專用產品幫助他們快速開發,尤其是消費電子領域的客戶。定制化MCU也需要建模,但復雜度比CPU或GPU低多了。”
復雜度是相對的。“我們打算用64位的MCU開發真正智能的設備,”Vista Ventures 經營合伙人 Jim Hogan說,“但這些MCU的代碼堆棧相當有限。”
在這種趨勢下,MCU也開始介入到計算當中--特別是物聯網的應用。“不是傳統的計算,” ARM 物聯網市場副總裁Zach Shelby說,“在MEMS應用中,利用32位和64位MCU來計算已經很常見。關鍵在于我們如何將軟件設計成大量重復任務的類型。FPGA不適合低功耗應用,如果在一顆混合芯片芯片上實現視頻檢測算法,就必須用到微控制器,不過MCU還是用來完成不斷重復的任務。”
MCU的片上存儲容量較少,常常為MCU與CPU或者其他MCU協調工作帶來麻煩。特別是在視頻流媒體處理與圖像識別應用方面,越來越多的數據處理是系統設計需要解決的大問題。從系統上層來看,有兩種方法可以解決這一問題,第一種方法是采用更快的處理器更多的存儲容量,第二種方法是采用更多的處理器以提高處理效率。雖然每個處理單元的速度比較慢,但多個處理單元合作可以將數據處理任務在限定時間內完成, 當處理任務繁忙時,這些MCU也可以進入空閑狀態。
“人們需要這種靈活性,因為你會有很多的異質應用(heterogeneous application)要處理,你又不愿意采用同質模型(homogenous model,CPU或者GPU這種所擅長的計算方式)來實現,”NetSpeed Systems CEO與聯合創始人Sundari Mitra說,“微控制器的優點是其有一套可編程的微代碼引擎(microcode engine),用戶可以根據應用環境選擇合適的架構,因此比處理器硬核靈活性更高。微處理器可以給用戶一些靈活性--雖然不太多,但畢竟多了些靈活性。這讓用戶在架構方面具備了更多的靈活性。CPU在浮點計算方面更具優勢,GPU在視頻處理方面更具優勢,MCU則處于兩者之間。MCU可用于可穿戴等物聯網終端設備,也可用于汽車引擎的控制。MCU的架構要有足夠的靈活性和自適性,以適應不同的應用。如果開發人員清楚應用的工作流程,并對此進行相應的優化,使用MCU能為你的計算引擎帶來一些多樣性。”
定義MCU
通常來說,MCU是CPU與GPU的瘦身版,計算能力相對弱,跑的時鐘速度也比較低。在存儲架構上MCU與CPU和GPU的區別更明顯,特別是8位與16位MCU,通常只有片上存儲。因為成本低、功耗更低,所以很受歡迎。但高級的32位MCU與低端CPU的區別已經不明顯,64位多核MCU的出現更讓人困惑。
“從大的方面來說,根據工作負荷的不同,CPU通常會為單線程或多線程性能優化,”Mitra說,“如果考慮實時性的要求--物聯網中有很多實時性應用--系統需要做出實時響應,CPU通常不會對實時性任務進行優化。假設有這樣一個應用場景,CPU需要監測周圍環境狀況,當環境發生變化時做出相應的決策,這時不大可能用CPU來反復的檢測某一點,這就是MCU的用武之地。那么使用MCU到底有什么不同呢?CPU與GPU都很容易理解,但MCU不是這樣。應用MCU要面臨可用信息更少、設計參數常常變更的狀況,所以開發人員要適應。”
同樣,由于MCU應用的多樣性,很難清楚的定義MCU的市場,也不容易用統一標準來預測MCU市場的走勢。在2016年5月份的報告中,Brisk Insights預測,到2022年MCU市場將保持15.8%的年復合增長率,Brisk Insights認為在物聯網應用的推動下,32位MCU將是增長最快的市場。Databeans的數據則比Brisk Insights保守很多,其預測年復合增長率為6%,MCU市場最大的推手是工業需求。
Gartner則給出了MCU 領域的排名前列的廠商,它們是瑞薩、恩智浦(NXP)、意法半導體、Microchip、德州儀器和英飛凌。
但MCU不斷出現在新的應用場景中,這使得MCU的市場越來碎片化,以致難以追蹤。
“每種非常復雜的芯片,幾乎都包含了MCU,” Arteris 市場副總裁Kurt Shuler說道,“在汽車里面,到處可以見到獨立工作的MCU,大型芯片往往也有MCU在后臺運行,MCU在無線數字基帶應用中也很廣泛。”
使用MCU的設備通常將程序優化以提高電源效率,現在開發人員仍在通過延長喚醒時間等方式來進一步降低功耗。開發人員所面臨的挑戰更多不是來自于MCU硬件能力方面,而在于如何在系統中更高的發揮這些硬件能力。
結論
MCU產業正在大步前進,雖然MCU的定義在改變,但方向是明確的。在未來幾年,物聯網的大發展將使很多終端設備將接到網絡,甚至直接與其他的處理器進行通信,MCU將在這些設備中大放異彩。
MCU的潛力到底有多大,仍有很多值得討論的空間。Mentor的Caples表示,將MCU中的某些功能應用起來,可能需要一名軟件工程師一年的時間。“沒有人有時間這樣做。”至少現在沒有人這樣嘗試。
評論
查看更多