相關文章

Cortex m3 01 談完了ARM處理器在各種高階行動應用中所扮演的角色,我們稍微改變一下口味,回頭來講講MCU(微控制器,參考原來這些 地方都有ARM)。由於MCU追求的是五臟俱全、短小精悍,而且要吃的少跑得久,因此在小小一顆封裝中就具備了完整的處理器、記憶體、週邊I/O等功能。

由於這樣的架構概念,使得MCU發展初期被人稱為單晶片處理器,也就是同樣的電路系統,過去要靠多顆晶片搭配組裝才能實現的產品,使用MCU的話,一顆就可以打死了。從歷史上來看,最具代表性的MCU產品,莫過於Intel推出,並由許多IC設計公司所發揚光大的8051架構,它可以說是無孔不入的進入了我們的日常生活,食衣住行育樂都來參一咖,儼然成為工業標準。

▲MCU在各種家用電器中都佔有相當重要的主控地位。(圖片來源:made-in-china.com)

頑強的一哥Intel 8051

無所不在的處理器,對廠商來說,等於是無可限量的商機。因此,許多處理器應用架構都想要取代8051當市場一哥。不過8051太頑強了,因為Intel完全把它所有的相關智財開放,業界可以任意使用其架構發揮創意,許多IC設計廠商透過巧思,在8051這塊原料裡加上了許多不同的配料,針對不同的市場饕客,設計出許多不同口味的菜餚,滿足不同應用類型與每個人挑剔的胃口。

受限於當初設計的時空背景,8051是一顆純粹的8位元MCU,不僅它的內部指令處理能力如此,外部的記憶體定址能力也是8位元。另外它的運作時脈也僅有12MHz,但是後來的數位產品功能越來越複雜,IC設計廠商也極盡所能想從8051原始架構壓榨出最大效能,一方面也要維持其軟硬體架構相容性。

▲8051算是目前應用最廣泛的MCU,未來十年內也沒有人能取代。(圖片來源:CPU-World)

誰來取代不老妖姬

因此,各種高頻率、高效能的8051產品紛紛誕生,比如說原始8051僅有12MHz,但修改版時脈最高可超過100MHz,不少廠商修改了內部時脈的運作規則,產生許多效能更變態的版本。另外原始8051可定址的記憶體容量有限,廠商也推出能定址到16位元記憶體的版本,讓系統吃個飽飽。

但不管再怎麼修改,8051還是8051,為了相容性,許多歷史包袱仍然丟不掉,就技術上來說,砍掉重練推出一款超級8051是有可能的,如此時脈可以上看數百MHz,甚至內部資料與外部連接寬度都可以搞到32或64位元,但這麼一來也就失去8051的相容性優勢,倒不如重新開發一款全新的MCU產品。

雖然是老驥伏櫪,但畢竟8051的基本架構已經是上個世紀的構想,無法滿足現代數位產品對功能、效能的需求,ARM便想趁虛而入,如果能一舉拿下MCU的市場,便可進一步拓展市場佔有率。

ARM7TDMI vs. Cortex-M3三大比一比

ARM家族中也有低功耗的處理器核心產品,比如說ARM7TDMI,至今仍是許多手錶、時鐘、遙控器甚至是家電或電子玩具產品的最愛,但為何ARM選擇推出全新的架構,而不是像Intel一樣搬出舊產品,把ARM7甚至是ARM9換個新製程、換行銷包裝就直接推上市場?我們就以Cortex-M3這個最近很熱門的32位元MCU核心來觀察吧。

▲著名的NDS遊樂器中,就採用了一顆ARM7TDMI(另一顆為ARM9)。(圖片來源:PCgames)

1. 運算流程不同

首先,ARM7TDMI與Cortex-M3的指令集體系完全不同,前者為了節省晶片空間,將指令和資料管線合在一起,同一時間只能執行一種指令。而Cortex-M3則是將指令與資料操作分開,這也更符合現代處理器的設計思維。

這和它們的誕生背景有關,當ARM7TDMI發表時,市面上的製程技術並不如現在這麼先進,所以折衷犧牲了一點效能,換取較大的晶片使用效率。另一個影響效能的因素,就是Cortex-M3支援分支預測功能,ARM7TDMI則完全不具備。

2. 運算能力不同

其次,Cortex-M3的核心包含可同時相容舊的Thumb和新的Thumb-2指令集的編譯器、一個支援硬體乘法和硬體除法的ALU,以及用來控制邏輯和連接處理器其他元件的介面。它是一顆32位元處理器,帶有32位元寬度的資料路徑、暫存器和記憶體介面。

而傳統ARM7處理器的系統只能存取對齊的資料,只有沿著對齊的位元邊界才可以讀取和儲存資料。Cortex-M3處理器除了支援單週期32位元乘法操作之外,還支援帶符號的和不帶符號的除法操作,這些操作使用SDIV和UDIV指令,根據操作數大小的不同可在2到12個週期內完成。如果被除數和除數大小接近,除法操作還能算得更快。憑藉這些運算能力上的改進,Cortex-M3成為需要高度數值運算能力的應用首選,像是感測器資料的讀取與分析等等。

3. 支援指令集不同

另外,不同於ARM7TDMI,Cortex-M3不支援標準ARM指令集,而是只能支援Thumb-2指令集。在低階MCUI應用上,指令集的切換會降低性能,多餘的指令集對晶片本身也只是浪費。過去ARM7TDMI之所以同時支援ARM與Thumb指令集,是因為當初Thumb指令集限制頗多,且僅是把部分32位元ARM指令集抽出,重新以16位元編碼,大部分的功能還要借助原始ARM指令集執行。所以當ARM7TDMI處理比較複雜的應用時,就會在ARM與Thumb指令集之間頻繁的切換。

但是到了Thumb-2,大部分Thumb指令集的缺陷都已經修正,不只可以應付特殊狀況,也也不再需要另行減肥,而是自成體系的完整系統指令。Thumb-2指令集整合了部分Thumb 16位元指令,並且新增許多原生的32位元Thumb指令,新版的Thumb-2指令可以達成完整版ARM指令集的所有功能,因此可以兼顧功能性與同步提升程式碼的密度和性能。

Cortex-M4再接再厲

基本上,Cortex-M3可以說是針對MCU重新打造的32位元架構,不僅硬體針對比起8051和自家的ARM7TDMI,不僅硬體大幅改造,在開發環境方面,也考慮到了8051的軟體轉移。由於ARM的野心是要先從高階MCU應用著手,8051的軟體資源轉移其實只是做個樣子,要用OK,但是成本你自己先考慮清楚,畢竟Cortex-M3維持了ARM家族一貫的傳統,在MCU產品裡是相對高價的選擇。

由於Cortex-M3的應用導入非常火熱,絕大多數IC設計廠商也都加入推出相關的架構設計,ARM也再接再厲推出了全新的Cortex-M4體系。它瞄準高效能數位訊號處理市場,內建單一週期MAC單元、最佳化的單一指令多重資料(SIMD)單元、飽和算術指令(saturating arithmetic instructions)及選配的單精度浮點協處理器單元(single precision FPU),準備把市場拉到更高階的數位訊號處理應用。不過,其實Cortex-M3也具備連接外部運算加速單元的能力,Cortex-M4的推出其實有點肥水不落外人田的意味。

【編按】Dark Eric目前是自由作家,過去曾在幾家專業媒體撰寫比LP充血還要硬的技術文章,對半導體技術與市場之類的怪玩意有點小研究,如果大家也想成為特約作者, 歡迎來信tb@techbang.com.tw與我們討論。

使用 Facebook 留言

Ed6adbd809263027776c7ce261c7587d?size=48&default=wavatar
1.  RB (發表於 2010年5月18日 16:00)
不過,在UC市場上的競爭者不只有8051...

PIC和AVR也是競爭者,而且是和ARM一樣使用了RISC架構(但不是基於ARM

最近在試著自學AVR...(這在國內好像不常見
4c71d9cddec91fcdb9c225fa735cc976?size=48&default=wavatar
2.  JETA (發表於 2010年5月19日 02:57)
這個嘛,每個念電子的總該會玩過得東西XD

51系列絕對還可以在戰幾十年。

發表回應

謹慎發言,尊重彼此。按此展開留言規則