2012年4月27日 星期五

ARM Cortex 應用

前兩天文章(大陸的8 bits MCU)內剛好有讀著回應有關 NXP 4300 Series 產品。

剛好一位朋友昨天也剛好打電話給我也聊到這一棵,應該不是說4300 ,

而是提到Cortex-M4。這位朋友玩 32 bit ARM 也有玩一陣子了,本質學能又是科班出身,

我當然都以他的看法為主,他跟我提到說:基本上Cortex-M4 在ARM 裡定位就是一棵DSP

(Digital Signal Processor),DSP 的好處就是可以進行平行運算處理,所以他的運算

性能高。

----

我們都知道一般我們在微處理器的系統應用中,程式主要的工作無非就是協助我們做

一般數學計算或周邊應用電路的控制,當然我們一般都比較重視周邊裝置的控制,

但隨著目前應用領域的擴充,隨著而來就是需要更複雜的運算能力,而至於那些周邊裝置

的控制就沒那麼重要啦,譬如說:像我們在引擎控制裡,最基本的周邊控制就只有

噴油嘴及點火線圈兩大項目而已....這對一般MCU 來說:輕而易舉。

但是要送多少油?!點火正時該如何計算求得?!這就要複雜的數學運算--- 這個才是

系統的真正價值。所以,您說在 8 bits 與32 bits MCU 系統應用中,您如何真正能夠

界定出兩者在系統應用端的價值在哪?!我想主要還是在於這些背後的運算能力與效能

表現吧!否則:您有 10 bits ADC,有USB、有 I2C, SPI,  PWM,  Timer....這些大家都

大同小異...也都很輕易可以做得到。  

同理,若純粹以這些周邊裝置控制應用來說,那我們在系統應用端也不需要非得要

32 bits ARM MCU 啊....但事實上,在系統應用端隨著市場需求以及越來越競爭的

市場機制下,若只是靠著周邊應用裝置來訴求的產品是越來越難取得市場消費者青睞。

舉個例子來說:像現在的手持移動裝置,不但要有觸控介面裝置,還要表現聲光影音

效果的畫質表現。這就不是簡單的周邊裝置控制應用而已。

因應這樣子的市場,也沒有一定就非得要 32 bits ARM MCU 啊?!像以前我做那個

MP3 隨身播放器來說:他就是簡單的周邊裝置控制,頂多加一個MP3 解碼器,

所以,我們在8051 MCU 旁多加了一棵 Analog Device 的AD 21xx 的DSP 就夠了!

這樣子做也可以達到市場功能需求與價格優勢...

但是經過這短短幾年,這樣的需求越來越不夠了,因為影音不止只是Mp3 ,還有照片

JPEG 還有影片MPEG、AVI...等等許多需要越來越複雜的解編碼的運算能力。

您光只做其中一兩項功能的產品,是很難找得到消費者買單的啦...

所以事情的演變就不得不將過去那一種客製結合MCU + DSP 的作法把他做成一個

標準的 微處理器架構。也就是真正的SOC (System On Chip )。

所以像目前位居移動裝置微處理器大廠 ARM 來說:這就是一個重要的產品里程碑。

-----------------

但如何做到,還可以保持一定未來的競爭優勢?!那就是在架構上保有一定擴充能力。

因為很明顯我們也看到了單一核心的處理器也不一定符合市場需求,未來不止雙核、

四核甚至越來越多處理器的結合就是一種趨勢。所以在架構定義上就得謹慎與細心考量。

而基本上微處理器的基本架構為以下兩大種:Von Neumann 與 Harvard 兩種。

---------------------------------------------------------

這些東西書上都會教,大家也都懂得啦...簡單的舉個例子來說:

以前我們玩那個Intel 8051 的組合語言裡有所謂的MOVX 及MOVC 兩個指令,

代表著他的程式執行指令與資料存取指令是分開的,所以他就是一種 Harward 架構。

而像那個Microchip 的PIC ...以前還有那一種PIC 12 及PIC 16 ...等等,您從他的

反組譯程式碼可以看到他的等長指令中:前幾個bits 是指令後面幾個bits 代表的

就是定址位置上的資料。所以以指令+ 資料位置就可以讓MCU 執行工作了。

所以這一種架構就是所謂的 Von Neumann 架構啊。從這一個簡單的舉例,

我們就知道像PIC 這一種MCU 來看:他就真的簡單多了,但相對來說他的擴充性就比

較差,譬如:8051 就可以透過 MOVX 的部分來擴充我們一些外部周邊裝置的不足。

當然在IC 架構上所衍生的成本,當然也很容易看得出Von Neumann 的優勢。只不過

這個優勢隨著IC 製程與應用市場來看:也未必還像當初時空環境一樣可相提並論的。

----

當然啊...像Von Neumann 這一種架構的設計還有一個致命宿命缺點:無法平行處理。

因為中央處理器一次只能抓取一個指令及資料...等完成指令與資料處理後,才可以

進行下一道指令與資料處理。但像Harward 架構的MCU,因為他的指令與資料匯流排

是分開的,所以,他幾乎可以同時抓取程式指令,也可以同時處理數據資料。

舉例來說:經由組譯器的協助,您可以知道如果要計算2+2+2+ 2 = 8 來說:

像PIC 那一種來說:您也只能先 2+2 =4,然後 4+2 = 6 ,最後 6+2 = 8 。三個步驟。

但像Harward 的MCU 就可以 2+2 =4 ,同時另一組資料也Standby 在2+2=4 ...

最後一次就完成  4+4 = 8 ...兩步就完成了。...(早期 PIC 號稱是指令時脈比較短 4T,

比8051 的 12T 短...所以他一個一個慢慢算也可以比8051 快,但後來人家8051 改良為

RISC 之後,人家也可以達到 4T 甚至到 1 T,所以人家一樣可以用乘法外加短指令時脈

完成...)。但畢竟還是架構上先天宿命的因素 Von Neumann 就注定他不可能是DSP

所需的架構了。像早期的AD21xx 也都是Harward 架構。

-----------------------------

經由這樣子的簡單的解說,我們就可以輕易的看的懂像NXP 這一棵4300的文件資料:

------------------------------------------

--------------------

當然我們也高興的看到ARM 已經完成了這兩種各具系統應用特色的MCU 架構的

整合設計成果,也代表著一個新的里程碑。

我相信未來我們在系統應用端不能只單單想用那些傳統的周邊裝置控制應用而已,

我們更應該專注在DSP 所提供的強大運算能力能帶給我們在系統應用端附加價值。

當然或許在市場上有許多人會認為到底有多人非得要用到這些應用,難道不能只是

在周邊裝置控制應用的基礎上,增加傳統MCU 能力嗎?! 譬如除了8051 本身

去強化他本身的周邊裝置控制外,提升他的運算速度,難道不夠嗎?!

但我還是強調一點:市場沒有一定的規則與定律,但當您如此思考時,您是否

有把握說到與做到是產品標準化到一般普羅大眾可以接受?您們準備要花多少

時間精力來教育市場,教育終端使用者?!您預計花多少資源完成市場接受?

否則,我說了~

您不能老是搞一些有點客製化,或跟別人標新立異的怪東西...然後又要別人搞了一

大堆奇奇怪怪的發展應用平台,外加奇奇怪怪的組譯器...開發版..ICE...IDE...

真的~現在沒有多少系統應用工程師們有那麼多生命力可以搞得懂您們家的東西。

您們家的IC 便宜又怎樣?!工程師健康的肝還是最貴的啦...

12 則留言:

  1. 在下也算是MCU業界的一員,不過很資淺就是了。以現階段的台灣客戶來說,共通平台很重要嗎? 大多數的工程師根本來MCU都不想去懂了,最好是有那種別家客戶已經在用Solution拿來就好,不然或是你們幫我作好也可以啦,但是要有認證通過我才要喔。

    什麼哈佛架構?32 & 8 bits? 不就是一顆幾塊錢比較多腳的ic嗎?

    唉, 完全就是沉淪阿。

    回覆刪除
    回覆
    1. 我想這個是基本格局的問題...
      我想那一種根本不在乎啥?!甚至還要您們幫忙寫程式的客人 ...
      這一種客人您再怎麼努力的搞東西給他們,他們還是會嫌東嫌西的。
      搞不好~跑沒多少單,就又跑去別家MCU 廠拗另一家幫他們弄。
      這樣子的客人如果您覺得您會作得很爽...那也沒人能礙得了您。
      放心好了~這種客人也不會有多少利潤或有多少技術發揮空間可以
      讓您成長的啦...
      浪費這一種時間,還不如多讀一點書吧!--- 讓您視野與格局改變一下吧!
      寫MCU 韌體程式、搞系統設計...可別在您手上再一次沈淪了吧!

      刪除
  2. 小弟是從系統研發跳過來專職作MCU的,原本是打算看看其他產業別是什麼狀況。沒想到不看還好,一看下去整組壞了了。

    回覆刪除
    回覆
    1. 所以我們才一直強調說:搞產品或找工作真的不要人云亦云的...
      尤其在許多人云亦云的市場裡: 時機是很重要的啦。
      所以,我們今天在此討論32 bits MCU ~當然會有許多人可能很不屑。
      就像幾年前搞IC 設計的,也都信誓旦旦的認為:只要有一棵8051 Core,
      怎樣的產品應用市場需求,我只要用這個8 bits Core 外加一些周邊應用
      回路,甚至頂多把一些系統應用的周邊搞成ASIC 模組就好了。
      結果,大家還不是在那邊撐著~撐到最後...就您所說的:整組壞了了。
      這個就是我們所說的格局與懂得歷史推演,也懂得要比人家深謀遠慮
      的看未來啦。
      ---  要不然您以為人家這些老外大廠這麼笨?!而您最聰明? :))

       

      刪除
  3. 32位元MCU都是在玩數位信號處理及機器學習。
    8位元根本上不了這個等級。
    不是多腳位。而是運算反應時間。
    還有更多的應用在機器視覺上。
    以為8位元和32位元做的事都一樣,那視野真的太小了。

    回覆刪除
    回覆
    1. 講得很好!  =D> ... =D> ... =D> ... =D> ... =D> ...
      "以為8位元和32位元做的事都一樣"...我想這是一般人容易犯的毛病,
      尤其是國內許多上游IC 設計業的錯覺,很簡單:他能真正掌握的
      系統應用觀點真的不多。他們都以為只要硬體得定,哪需要什麼系統?!
      更不用說:有許多系統應用得靠著系統平台(作業系統)不行。
      --- 當然啊,您也不能怪他們,因為他們或許真的對於這樣的系統平台
      也沒多大信心,所以寧願選擇視而不見。--- 縮小自己的視野。
      最後呢?!也只能把自己困在傳統又一大堆人在瞎搞和的系統應用裡吧。
      ----------------
      這幾年我最常常聽到,搞IC 設計業者跑來問我說: Chamber 您有什麼
      系統產品可以以IC 角度來搞的?!...我也只能說:搞系統是我的事,
      您公司找不到IC 可以切入的應用市場不是我的事。尤其您們老是要做
      那一種又有量,又怕別人殺價競爭的東西...我真的也不知道的啦。

      刪除
  4. Bee, 不同級距的東西,這你知道我知道,客戶和老闆就是裝作不知道。在台灣老闆觀念裡,硬體costdown才是公司命脈,投人力是應該的。軟韌體都是贈品性質,何必花人力,叫供應商作就可以啦。

    所以對這些搞爛產業的老闆們來說,共通平台並沒有太大意義。更遑論,現在大多數公司裡的RD們 實質工作內容上幾乎都已經變成PM,根本幾乎不碰技術細節了。

    回覆刪除
    回覆
    1. 小老弟啊...您可以去找一找世上哪一家真正成功的公司的產品開發模式
      都是假借他人之手的?!您看連Apple 賈伯斯當初跟 Motorola 合作CPU,
      叫他去跟比爾蓋茲談作業系統合作...最後他都搞得一肚子大便的決定什麼
      都自己來!
      很簡單啊...如果這個東西是別人幫您做的,又那麼好賺,那誰不會自己搞
      一家自己賣啊?誰會那麼笨啊?!不要說別的公司啊...連自己公司的研發
      團隊也都會這麼想啊。所以我才跟您說:這一種只會出餿主意叫供應商
      搞得要死要活的東西...我還沒看過好東西。
      ----- 那些PM 啊,只會出一張嘴:結果常常就是一大堆也不知所以然的
      工程師們,常常為著無知的客戶疲於奔命。幾年下來,跑來跟我說:
      我們會搞USB,會搞RF...我們還會一些Android,觸控方案也有...
      那請問您有什麼案子可以讓我們做的?!--- 答案是:那您應該自己
      開一家公司決定自己要做什麼吧!天下沒那麼好康的Easy money
      讓您賺得啦。 :))

       

      刪除
  5. 我認為人工智能這樣的程式,幾乎無法晶片化。
    規則庫:是人以為機器看到什麼寫對應程式。
    機器學習:分為學習機和執行結果,學習機在PC上跑要數小時,數G的記憶體,根本無法晶片化。
    國家產出硬體人是不是過剩,以為晶片化接近萬能。

    回覆刪除
    回覆
    1. 我想我們國內電子產業真的過渡的重視硬體,也太相信硬體神話,
      認為硬體才是王道,搞IC 設計也只有從硬體角度與成本去看市場與分析產品。
      但終究這件事還是會走到一定的極限時,您又該如何面對應用市場呢?
      這是一個很嚴肅卻很難轉換心態的調整...因為真的走過頭了,他們
      還是蒙著眼睛說:短線上還是得趕快靠硬體賺錢最快...一直的惡性循環,
      我看要改變,也不太可能是一朝一夕的吧!

      刪除
  6. 8 位元和32位元還有很大的差異就是速度與系統,
    如果做了一個8位元 100MHz的CPU,
    和同樣速度的32位元比起來是不是一樣快?
    理論上是, 實質上則不是,

    速度講的是製程,製程又決定價格,
    如果弄了一個8位元100MHz的CPU,請問要賣多少?
    應該和 32位元的同等級價格差不多吧...客人會買哪個?

    另外, 32位元的CPU還有好處是可以整合作業系統進去,
    假如把linux作進去, 就可以沿用PC經年累月的前人成果,
    機械視覺這類難搞的東西馬上就有現成的可以修改,
    不必從無到有...

    8位元的CPU如果弄個easy linux進去呢?
    用RISC算起來要做到400Mhz才堪用吧,
    這樣要賣多少錢呢?
    最後還是要回到和大家差不多的規格,
    差不多的價格以及殺來殺去的現實中...

    回覆刪除
    回覆
    1. 8 位元和32位元 當然不一樣啊,就算跑一樣的 100 MHz。
      您一個簡單的Long + Long 的運算,8 位元至少要搬四次資料之後,
      才可以運算,但32位元 搬一次就行了...這一種情形下,就您說的:
      8 位元跑 400 MHz 也未必比較快啊。(因為每搬一次,您還得靠
      accumulator 幫忙搬...所以真的不會只有差x4 而已!)所以
      那一天有個客人用那個 400 MHz 跟 100 MHz 在比,我也懶得解釋。
      因為真的太多人真已經很習慣談產品或談技術,都是把硬體拆開來
      看成本...
      如果沒有像您所說的那一種整合作業系統觀念的話,往後大家還只是
      永遠是賣肝工程師,因為每一次他們在講Cost Down的時候,就是
      拼命降硬體架構外,還要軟體工程師每一次陪他們重新再搞一次,
      沒完沒了的競爭生存遊戲...您想玩?!沒關係~別人的小孩死不完,
      您就去搞吧!...我看您有多少青春的肉體可以消耗?!哈~哈~ :))

      刪除