前言:在多數的微控器(MCU)應用中「成本」向來被視為第一設計要則,因此許多工程師傾向(或被要求)使用初階MCU來精省成本,然這僅是精省了量產時的硬件料件成本,若從整體成本的角度來審視,結果往往會適得其反。 過去,微控器(MCU)的應用設計相當講究硬件料件成本的精省,如果能在一個產品上多省個0.1美元,則產品的量產數愈多,則成本精省效應就愈高,所以過往都偏好使用簡易、低廉的MCU,能用4位MCU完成設計就用4位MCU,能用8位MCU完成設計就用8位MCU,很少在意后續硬件設計上的后續發展、擴充彈性。 不過,硬件料件精省法只適合于過去的「少樣、多量、少變」生產,然今日市場已是「多樣、少量、快變」的走向,如此若再堅持「以料件精省為第一要則的設計」不僅無法省成本,反而會適合其反。ARM公司歐洲區車用及嵌入式部門經理Boris Vittorelli表示。 為了因應「多樣、快變」的趨勢,研發單位必須增加MCU控制程序的撰寫心力,現在MCU應用開發的編制上已到了1:4的軟硬配置,即一個研發項目中有1名MCU硬件工程師與4名MCU軟件工程師,或者2名硬件工程師加上8名軟件工程師,可見MCU軟件研發的重要性大幅增高。 若更進一步了解,MCU的軟件研發成本不單是在功效的首次開發撰寫上,此方面的比重已退至1/3,有更大的比重(另2/3)是在軟件的后續維護支持上,此方面為程序發表后的持續更新補強、最佳化微調、新功能的追加等,這才是真正的成本癥結所在。 煩人的額外調修、轉移改寫的痛 那么,前面所言的「為精省硬件成本而選用初階MCU,反而是增加整體設計開發成本。」到底是何故呢?那就是「選用低階MCU雖精省了些許硬件成本,但卻使軟件的開發、維護成本大增,對整體成本而言反而是有增無減。」 Boris說明:初階MCU的運算力有限、可存取的內存容量有限,程序在開發設計時因這些硬件性限制而無法盡情揮灑,必須要用更多的人工心力來對程序進行最佳化,例如程序過大時必須想辦法精簡程序代碼,執行過慢時必須對程序優先權再行調整,這樣才能完成設計并合乎當初規劃設定的需求,然如此就增加了軟件工程師的額外心力、時間成本。 只是增加軟件的調修心力還不是最麻煩的,更麻煩的是:一旦確定原有使用的初階MCU,其架構已無法進一步滿足新的功效設計需求時,就必須進行架構的替換,這時就得開始物色新接替的(中階)MCU,然新MCU的架構往往與原有的MCU不兼容,這時原有的控制程序就要全面改寫,如此才能移轉到新架構上來執行。 轉移(Migration)與轉寫(Porting)就造成相當龐大的心力成本。Boris說,原有的程序無法持續受用、程序設計師必須學習與適應新架構、重新摸索新架構的對應開發工具、找尋新架構所常用的函式及范例程序等。不僅如此,轉寫過程中還有程序重新整合的工作,轉寫完成后還要重新再來一次有關除錯、驗證、試行的工作,這才是真正的大成本。 如果這些移轉僅只一次或許還能勉為其難地接受,但通常若干年后就必須重演一次,因為轉移后的架構又開始不敷使用;或者當初物色評選時不夠嚴謹,選擇了不全然合用的架構;或初期合用但逐漸又難以合用的架構;或發創該架構的業者自行停終架構的后續發展,隨之芯片也停產等,這時上述一切的痛苦就必須再來一遍。 選擇良善架構、健全生態 所以,精省成本的第一目標依舊沒變,但實現手法必須改變,MCU的開發設計者必須在初期就選定一個最具未來性的MCU架構,該架構要能因應日后的各種新發展、新擴增,使程序代碼獲得最長效的沿用,免去每數年就必須再行轉移、改寫的無謂程序。 同時,良善架構的MCU也保有開發設計的高度寬裕性,程序設計師可以專注于新功效的開發,而不用回頭再去擔憂新撰寫的程序會否太占內存空間、會否太耗用運算資源。 更重要的是,廣大采用且長時間受用的MCU架構,其生態系統也格外健全,程序設計師可以找到最多的范例程序、最多的開發支持工具,使開發更省心力、更具效率。有鑒于此ARM針對MCU應用提出最合適的新架構核心:Cortex-M3,Cortex-M3比原有ARM7TDMI核心更適合于嵌入式控制應用。 針對嵌入式控制而設計 Coretx-M3之所以更適用于嵌入式控制應用,主要在于其內建了中斷控制,與過往其它未內建中斷控制的核心相比,Coretex-M3可以在更快的頻率周期時間內對中斷作出反應。此外Coretex-M3能對內存進行最佳化運用,能分別以8位、16位、32位的寬度來存取內存,如此任何地址都能存取,就不容易產生空隙、未用地址的情形。再加上Coretex-M3使用Thumb-2指令集,Thumb-2指令集能兼顧運算效能與內存容量,讓嵌入式應用以更省的成本達到最佳的效能。 8 位、32位量化比較 「選擇較具寬裕彈性的MCU架構,以精省軟件開發維護成本,進而精省整體開發成本。」這對多數的嵌入式應用工程師而言可說是完全顛覆了過去,恐一時間難以接受,且依舊會在意硬件料件成本。 對此Boris表示:新實現方式的唯一顧慮就是硬件料件成本的增加,如果連硬件料件成本都低于原有的實現方式,那么工程師就沒有理由再堅持原有的作法。Boris以量化數字為例說明:今日若有一個嵌入式應用設計,其效能需求須達5 DMIPS,程序代碼容量須低于256KB,且芯片都是用臺積電(TSMC)的180nm一般性制程來產制,以此3項為先決標準,則Cortex-M3核心的MCU只需要4MHz的工作頻率,原因是Cortex-M3核心每MHz的運算能有1.25 DMIPS的效能。 其次Cortex-M3核心每MHz工作頻率約耗用0.19W的電能,如此4MHz則耗用0.8mW電能。再者用180nm制程產制Coretex-M3核心只需要0.36平方公厘的裸晶面積,而存放程序代碼的閃存則只要64KB容量,理由是Cortex-M3為32位架構,一般而言比8位架構高出4倍的程序代碼密度,64KB Flash Memory用180nm制程產制的結果只占0.13平方公厘的電路面積。針對面積部分進行加總,0.36+0.13=0.49,0.49平方公厘換算成晶圓成本則約19美分。 相對的,若不實行Coretex-M3核心而使用8位架構的8051核心,則各項特性表現多無法與Coretex-M3相比。 首先是效能,8051若要達到5 DMIPS的效能,以最傳統、最標準的8051而言,其每12個頻率周期才能完成1個指令的運算(若干指令要24、36個周期),因此每MHz約0.08 DMIPS(更確切而言是0.083),5 MDIPS則需要約63MHz的頻率。(附注1) 頻率頻率為63MHz,且8051核心的功耗約0.5mW/MHz,乘以63則得31.5mW(約32mW),等于是Coretex-M3的39、40倍用電。 至于電路面積方面,8051核心約為0.1平方公厘,純就核心面積確實8051比Cortex-M3理想,但若將Flash Memory的用量面積算入就全然不同,8051的控制程序必須使用256KB的內存容量,180nm制程后的面積為0.52平方公厘,核心與內存相加的結果成為0.62平方公厘,就整體面積而成大于Cortex-M3方案的0.49平方公厘,最后對應到晶圓成本上則是20美分,還比Cortex-M3方式貴1美分。(附注2) 至此毫無疑問:若選擇新精省路線,連硬件料件成本都比原有路線更精省,那么嵌入式應用工程師就再也沒有理由或顧忌,當下就應當替換成新的核心架構,即便今日不替換,數年后原有架構無法再因應成長,屆時一樣要替換,相信聰明的工程師不會讓自己的明天拘限在窒礙的角落。 附注1:標準傳統8051確實以12個頻率為1個執行周期,然今日以8051為核心的MCU多半能以4個頻率為1個周期,甚至是1個頻率為1個周期。 附注2:以上比較不含核心硅智財的技術授權費與每件量產的權利金。 |