完全看懂 ARM 處理器:RISC 與 CISC 是什麼?歷史、架構一次看透

ADVERTISEMENT

智慧型手機應用大爆發

被蘋果相中的ARMv6

在2007年的Macworld發生了一件大事,劃時代的iPhone誕生了,直覺的使用者操作立刻席捲全球,App Store的商業模式解決以往PDA程式太少的窘況。而第一代的iPhone和其後的iPhone 3G便是採用ARMv6處理器架構,也是第一次讓人感受到,原來ARM可以做到這麼好的使用者體驗。

ARMv6架構在2001提出,對應ARM11處理器家族。新增SIMD處理功能,相當適合影片處理加速使用。同時也提出ARM11MPCore,首次將多核心的概念導入ARM處理器中。Thumb指令集也升級到第2代Thumb-2,將原先16bit的指令集部分擴展到32bit,變成同時擁有16bit和32bit指令長度的指令集。

不過這個ARMv6架構有點短命,還沒看到幾顆多核的ARM11處理器(NVIDIATegra即為ARM11MPCore),就被ARM緊接而來的Cortex處理器給蓋過去。

劃分高中低階的Cortex

在ARM11之後的處理器家族,改採Cortex命名,並針對高、中、低階分別劃分為A、R、M三大處理器。像是高階手機用的Coretex-A系列,或者是微控制器所使用的Coretex-M系列,需要較高性能、或是即時處理的系統則改用Coretex-R系列。

除了Cortex-M0、Cortex-M1為ARMv6-M,馮‧紐曼架構之外,其他Cortex的處理器架構更新到ARMv7,一樣由高至低分成ARMv7-A、ARMv7-R、ARMv7-M三種,其中ARMv7-M不支援最原始的ARM指令集,僅支援16bit的Thumb指令集,卻加入NVIC(Nested Vectored Interrupt Controller),提供更快的中斷處理、還有負責CPU在深層睡眠時的中斷處理WIC(Wake-up Interrupt Controller)。

Cortex-A(ARMv7-A)和 Coretex-R(ARMv7-R)2種架構基本上是相同的,都支援更新的進階型SIMD處理,稱為NEON,ARM宣稱效能至少是上一代處理器架構ARMv6的2倍。NVIDIA的Tegra 2處理器較為特殊,雖是採用Cortex-A的CPU,但沒有包含NEON,反而使用自家的技術,內建專門的音訊處理器和視訊處理器。

Cortex-A和 Coretex-R最大的差異在於記憶體管理單元部分,Cortex-A使用MMU(memory management unit)、Cortex-R使用MPU(memory protection unit)。前者的記憶體管理單元提供虛擬記憶體的支援,後者只能運作在記憶體保護模式。

記憶體管理:real、protected、virtual

最初的CPU記憶體管理只有real mode,在這個模式下,所有程式都可以直接存取記憶體、I/O、電腦附加的硬體。但是在這種模式下的記憶體空間少(1MB),程式無法多工(如果2個程式同時餵給印表機資料,印出來會是什麼鬼啊!)。到了80286處理器後,導入了protected mode,將作業系統和程式的記憶體區塊分開,如果程式想要存取記憶體,必須經由作業系統中介。從而提升系統安全性和穩定性。virtual memory則是在protected mode下的產物,允許硬碟之類非實體記憶體的裝置能夠模擬成記憶體。邏輯上來說,可以在不增加硬體花費的情況下,直接加大實體記憶體容量。但硬碟的存取速度卻遠不如實體記憶體,目前SATA 6Gb/s介面頻寬為6Gb/s,DDR3-1600雙通道的介面頻寬卻有25.6GB/s,兩者相差約43倍。

遍地開花的ARM

ARM一開始與蘋果、VLSI所投資的資金下成立,初期營運狀況不佳,而英國當地也沒有什麼晶圓廠,同時ARM也決心將自行發展的技術成為業界的標準。在這些條件的加總之下,ARM選擇了以IP授權的方式經營。

IP(intellectual property智慧財產權)授權,即是把自己所創造的東西,以某種方式授權給其他人利用。例如我們在行人穿越線兩旁所看到的小綠人走路燈號,當初的設計者便可以把此種想法授權給其它地區採用,藉以收取授權費。而ARM也是透過此種方式營利,除了一開始的授權費之外,每賣出一顆晶片還需要付版權費。另一家較為知名採用IP授權營利的公司為MIPS,其產品常常可以在網路設備中見到。

這種授權方式使得每家公司都可以依據自身需求,設計出客製化晶片。比如說產品並不需要繪圖的部分,便可以把繪圖IP核心拿掉,亦或者也可以在晶片裡塞入其他家廠商做出的IP核心,讓功能更多元。相較於Intel近年強迫中獎的顯示核心,ARM的作法彈性許多。

完全看懂 ARM 處理器:RISC 與 CISC 是什麼?歷史、架構一次看透

▲常見的ARM授權製造模式,ARM將設計授權給設計公司(如Qualcomm),製造授權給晶圓代工公司(如台積電),最後生產出來的晶片再賣給其他廠商做成實際產品(如HTC)。

完全看懂 ARM 處理器:RISC 與 CISC 是什麼?歷史、架構一次看透

▲眾多的合作夥伴,這些公司都有ARM的IP授權,你能找出哪幾個較令人熟悉的牌子呢?

未來朝向64bit邁進

如同 x86邁向x64一般,ARM也需要更大的匯流排來增加效能。在下一代的ARMv8架構中,也將加入64bit的支援,但是一切都還在討論中。但是現在也不急,暫時還有個Coretex-A15可以拿來填一下發展時程,至於會增加哪些指令集則尚未確定。

ARMv8處理器將有2個執行狀態,AArch32和AArch64。前者將完全相容ARMv7的指令集及架構,將原封不動地移植到ARMv8身上。後者AArch64則是全新的指令集與處理器架構。

ARM目前也在積極建立並等待64bit的生態鏈完備,就如同x86轉換到x64一般,AMD的64位元處理器早在2003年問世,但是等到64位元作業系統、程式真正普及,卻也只是近幾年的事情而已。更別說一般人電腦C槽裡那個Program Files x86資料夾,放在裡面的程式應該比Program Files還要多。

最近開始身價上漲的硬體加解密功能,ARM也預計加入AES加解密的指令,利用進階SIMD的128bit暫存器來實作,SHA-1和SHA-256也在支援中。

AES演算法

Advanced Encryption Standard高級加密演算法,是一種用來進行區塊加密(將數值資料切割成等長,分別對個別區段分別加密)的技術,用以取代Data Encryption Standard(DES)的加密方式,目前DES已被SciEngines公司所製造的COPACOBANA RIVYERA硬體證實能夠在1天的時間內被暴力破解完畢。

SHA演算法

Secure Hash Algorithm安全雜湊演算法,不同的資料數值,經過特定演算法所運算出來的SHA值也不同,這個固定長度的值可視為這個資料的指紋,具有專一性。目前SHA演算法用來檢查檔案完整性與否,是否經過有心人士的篡改;也用來檢查從網路上下載回來的檔案是否正確,特別是那些動輒幾GB的檔案。

(後面還有ARM處理器家族、架構對照表)

R.F.
作者

誤入叢林的小白兔,每天爬樓梯到七樓的白癡,幻想自己很瘦的豬,一放假就睡死的bed potato。

使用 Facebook 留言
090aad1de211525f447f6fc18e7882f3?size=48&default=wavatar
5人給推

1.  cccooler (發表於 2012年9月18日 19:40)
大推R.F.編輯大大!!<( ̄︶ ̄)>
R.F.每次的文章都非常認真且圖文並茂 確實能讓讀者長知識
我相信喜歡T客邦與電腦王的讀者 一定都很喜歡這種有料的文章
而不是只有一些小道消息與八卦

R.F.編輯 堪稱T客邦的模範生阿!
146cb68accc0114436951dc20b66968e?size=48&default=wavatar
1人給推

4.  哈哈 (發表於 2012年9月18日 20:22)
原來精簡指令集電腦是這樣來的
只有在書中有看到這種架構
殊不知是這樣誕生的
讚(≧▽≦)
Ff90500f67fd98ba5903519ecc52b7ea?size=48&default=wavatar
5.  客人 (發表於 2012年9月18日 20:48)
目前SATA 6Gb/s介面頻寬為6Gb/s,DDR3-1600雙通道的介面頻寬卻有25.6GB/s,兩者相差約43倍。

是我不懂還是打錯了?
因該是[兩者相差約4.3倍]吧?
36d3039250d445ca8bbbe93569f116fd?size=48&default=wavatar
7.  jimmy (發表於 2012年9月18日 21:06)
※ 引述《客人》的留言:
> 目前SATA 6Gb/s介面頻寬為6Gb/s,DDR3-1600雙通道的介面頻寬卻有25.6GB/s,兩者相差約43倍。
>
> 是我不懂還是打錯了?
> 因該是[兩者相差約4.3倍]吧?

大B跟小b不一樣
R.F.
8.  R.F. (發表於 2012年9月18日 21:07)
※ 引述《客人》的留言:
> 目前SATA 6Gb/s介面頻寬為6Gb/s,DDR3-1600雙通道的介面頻寬卻有25.6GB/s,兩者相差約43倍。
>
> 是我不懂還是打錯了?
> 因該是[兩者相差約4.3倍]吧?

請記得bit和Byte要單位換算喔<( ̄︶ ̄)>
此外說明一下,一般來說,序列傳輸介面(COM Port、SATA、網路線、PCI-E……)一次只傳一個位元,所以使用bits/sec單位。
並列傳輸介面(Parallel Port、PATA、RAM……)一次會傳送許多個位元,使用Bytes/sec單位。
不過以上只是個通俗用法,如果硬要轉換也是可以的XD
78381e3834dc5848d07692e231fd59d5?size=48&default=wavatar
10.  想起小時候 (發表於 2012年9月19日 08:11)
這又讓我想起威盛
在技術優先的領域,台灣人終究是個半吊子
Vincent_Taipei
3人給推

11.  Vincent_Taipei (發表於 2012年9月19日 09:30)
你在T客邦的工作會不會太繁重?
有些人隨便烙幾句話, 辦個投票也是ㄧ篇稿子, 你寫的要死要活也是ㄧ篇稿子, 績效應該要不一樣吧, 不然很可憐...
加油, 這種由淺入深的文章很讚, 可以帶ㄧ些不是本行的人了解這些生硬的東西...
R.F.
3人給推

12.  R.F. (發表於 2012年9月19日 10:12)
※ 引述《Vincent_Taipei》的留言:
> 你在T客邦的工作會不會太繁重?
> 有些人隨便烙幾句話, 辦個投票也是ㄧ篇稿子, 你寫的要死要活也是ㄧ篇稿子, 績效應該要不一樣吧, 不然很可憐...
> 加油, 這種由淺入深的文章很讚, 可以帶ㄧ些不是本行的人了解這些生硬的東西...
>
感謝讀者的支持,這篇文章最先刊登在電腦王96期雜誌上,後轉載至T客邦上。
由於ARM採用IP授權的關係,資料挖得更深,也越覺得有趣,光是各家廠商的應用處理器之間的差異就相當的多,也還有Intel當初買了StrongARM做出自家的XScale,而後又賣給Marvell,近幾年又想利用Atom重返行動裝置市場,這歷史實在太黑了(≧▽≦)
Aaa7393402d2f61634068ee1c1ee0261?size=48&default=wavatar
13.  POTOPO (發表於 2012年9月19日 11:46)
※ 引述《R.F.》的留言:
> 感謝讀者的支持,這篇文章最先刊登在電腦王96期雜誌上,後轉載至T客邦上。
> 由於ARM採用IP授權的關係,資料挖得更深,也越覺得有趣,光是各家廠商的應用處理器之間的差異就相當的多,也還有Intel當初買了StrongARM做出自家的XScale,而後又賣給Marvell,近幾年又想利用Atom重返行動裝置市場,這歷史實在太黑了(≧▽≦)

讚!我這次真的受益良多呢!
可以的話,請務必說明一下這段黑歷史!
R.F.
16.  R.F. (發表於 2012年9月19日 17:53)
※ 引述《翎翊》的留言:
> 請大大帶我們了解嘿歷史+1 (≧▽≦)

最近身處水深火熱地獄中,比較沒有空寫〒ˍ〒
但大致上是XScale當初虧錢,就賣給了Marvell,現在又看到行動市場有利可圖,就把Atom直接砸下去做手機
不過以Intel強大的製程技術,省電又強悍的手機效能似乎可以期待?
4ac3e560d4b0318183215e1c95387e4d?size=48&default=wavatar
18.  Joe (發表於 2012年9月19日 22:59)
目前SATA 6Gb/s介面頻寬為6Gb/s,DDR3-1600雙通道的介面頻寬卻有25.6GB/s,兩者相差約43倍。

25.6*8/6 = 34

是不是算錯了?
F67b4deb8d44e08515327c0f5cdc80ca?size=48&default=wavatar
19.  路人 (發表於 2012年9月19日 23:21)
加油 希望techbang有更多這樣技術文章和專業評論文
R.F.
1人給推

20.  R.F. (發表於 2012年9月20日 00:14)
※ 引述《Joe》的留言:
> 目前SATA 6Gb/s介面頻寬為6Gb/s,DDR3-1600雙通道的介面頻寬卻有25.6GB/s,兩者相差約43倍。
>
> 25.6*8/6 = 34
>
> 是不是算錯了?
再次說明一下,SATA 6Gb/s採用8b/10b編碼(意即8bits的資料,會使用10bits表示),在傳輸上會有20%的資料冗餘,藉以提升傳輸資料的正確性,所以6Gb/s實際上頻寬只有600MB/s。
發表回應
謹慎發言,尊重彼此。按此展開留言規則