Tuesday, December 09, 2014

MCU以及SoC

這篇文章主要是由這邊 http://chamberplus.blogspot.tw/2014/12/blog-post.html 有感而發。

嵌入式系統包含太多了,我只能說chamberplus的重心一直都在MCU上面,他並不需要好的軟體人才,反而是需要有經驗的8051程式設計師。

話說回來,MCU跟SoC的差別在哪裡呢?

就我的認知,MCU基本上就是指8051。8051是由很簡單的CPU跟簡單的IO針腳所組成的,因為他是8-bit的CPU,所以能定址的記憶體也小。這個限制在今天似乎變成了一個缺陷:當整個系統需求越來越多時,如何讓程式碼可以維持在同樣大小,記憶體不用增加?

為什麼記憶體增加不可行?第一,會用MCU的廠商最大的考量就是成本,而增加記憶體對成本的傷害很大。另外就是8-bit CPU再怎麼增加記憶體就是只能用到256KB(有旁門左道可以增加到1或2MB,但是還是不夠用)。

你當然可以找很厲害的人來縮小程式碼,但是你要付多少錢給這個人?舉個簡單的FAT檔案系統好了,你要找到會FAT,又能夠用組語寫出小於100KB的程式的人,你覺得他值多少?而如果把條件放寬,會FAT,又能夠用C寫出小於2MB的程式的人,他又值多少?前者根本就是稀有財,而後者找個比較厲害的國立大學資工所畢業學生可能還可以做。說到底還是成本問題。

SoC基本上就是把CPU跟一堆周邊通通包進一顆晶片內。所以你要說單晶片,SoC也是啊?可是我看網路上,提到單晶片,大多是指MCU。SoC封裝的晶片大多比較高階,ARM11或是Cortex都有,重點是他們都是32-bit CPU,而且通常還有記憶體控制器。這表示可用的記憶體理論上可以到達4GB。其實不用到4GB,光是128MB就非常夠用了。這表示你可以有OS跑在這顆SoC上,而且你可以找到很多人幫你寫C程式,價錢又不會很貴。這時候老闆關心的是功能甚麼時候可以好,而不是程式碼有多小。

SoC看起來很好,那為什麼MCU還是風行?當然是價錢啦。一顆MCU可能台幣10元,可是一顆SoC可能要價美金10元。價錢決定市場,所以MCU大多是用在功能單一,價錢很敏感的產品上。而SoC則往往用在功能複雜,價錢較不敏感的產品上。

但是,這個趨勢有被打破的頃向,MCU越來越往SoC的方向走了,而且價錢還是一樣...。這當然是ARM積極介入的影響。畢竟有32-bit CPU的MCU可以用,誰會想用8-bit 8051 MCU。不過我個人認為這兩種東西還是不會匯合,理由還是成本問題。所以MCU的市場專注焦點還是[程式可以多小],而SoC的市場專注焦點還是[功能有多少]。

2 comments:

ChamberPlus Taiwan said...

謝謝你的連結。

無意間發現你的部落格,特地來朝聖一下,拜拜碼頭。

至於文章內所說:不需要好的軟體工程師,這一點澄清一下。

除非是公司產品是以軟體產品為主,當然需要好的軟體工程師。

只是在職場上一路走來,所從事的產品與研發內容都不是以軟體產品為主。

找好的軟體工程師,卻沒有好的發展環境與未來,就不要隨便害人了。

自從我離開園區之後,所待的公司人員都沒有沒有超過2、30人公司,

這些小公司講求的當然就是小而美,就連MCU 或SOC 也是斤斤計較的。

沒辦法,這就是台灣企業的宿命。俗話說:有頭髮的話誰願意當禿子?

你說對不對呢?

OD said...

這也是一種思維啦,不過我是不太認同。如果老是因為市場的原因而放棄軟體,那這間公司也就是這樣了。
光靠硬體也不是萬能的,軟體不出色就大概是 "me too" 產品。

當然如果只是要賺個幾年,這種思維無可厚非。

還有一點,就我的感覺,現在的 IC designer 也沒有以前那麼囂張,所以其實軟體漸漸地已經被重視了,至少不會像以前那樣被亂罵(明明就是IC做錯了還硬要說是軟體寫錯)。

codeblock