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

ADVERTISEMENT

開始大賣的ARM7

1993年推出的ARM7延續著ARMv3核心,但是由於製程的進步,快取加大至8KB,時脈也一舉拉高至40MHz。

ARM7TDMI(處理器架構ARMv4T),除了原本的32位元指令集外,還新增了Thumb,也就是精簡過的16位元指令集,讓編譯出來的程式可以縮小程式碼體積,官方表示與標準的ARM指令集相比,可以縮小35%的程式碼體積,又能享受32位元架構所帶來的效能提升。Thumb指令在執行時會通過處理器內一個叫做Thumb解碼器的東西,及時解壓成32位元ARM指令,同時也可受惠於32bit的記憶體匯流排,加速指令與資料的載入。

但之後的ARM8家族和Digital Equipment Corporation向ARM買授權自行製作的處理器StrongARM,都不支援Thumb。

ARM7EJ的處理器架構為ARMv5TEJ,直接加入稱為Jazelle DBX的運算電路,能夠以硬體加速大部分的Java bytecode,提升Java程式的執行效率;同時也新增適合處理DSP的指令,如飽和運算(saturated arithmetic)可以加速多媒體應用。

Java的執行方式

程式設計師以Java語言寫出程式後,經過編譯器編譯成Java bytecode檔,執行時便把這個Java bytecode丟入一個稱作JVM(Java Virtual Machine)的模擬器裡執行,在各種平台上都有不同的JVM,所以編譯過後的Java bytecode能夠跨平台執行。

飽和運算(saturated arithmetic)

正常以二進位表示為11111111(255)+00000001(1)=100000000(256),但是一個8bit的加法器,當輸入255+1的指令後,計算出來的結果將會是0。因為處理器只有8bit,最高位會產生數值溢位,實際交由8bit加法器運算將變成11111111(255)+00000001(1)=00000000(0)。但是當處理器支援飽和運算後,255+1的結果將變成255,經計算後的數值資料只會頂天立地(該資料類型的最大值或最小值),不會產生overflow或是underflow。

更換為哈佛架構

ARM9處理器家族內部處理器架構為ARMv5TE,導入了相當重要的架構更新,以往ARM和x86處理器都是採用馮‧紐曼架構,意即中央處理器和儲存裝置是分開的,中央處理器到儲存裝置中讀取一段程式碼執行,而不同程式碼可以造成不同的執行結果。相較於古早時代的電腦,一旦要執行不同的程式碼時,必須更動硬體設計,重新接線。約翰‧馮‧紐曼在1945年的論文中提出這個處理單元和儲存單元分離的概念,對於後來電腦發展有相當重大的影響。

哈佛架構則是馮‧紐曼架構的延伸,哈佛架構更進一步定義了程式和資料是由兩個獨立的空間儲存,同時也有兩個記憶體控制單元分別操作。讀取程式後解碼便得到資料位址,再到資料記憶體中讀取資料。此種架構好處在於指令和資料的記憶體操作能夠同時進行,當處理器在運算資料時,便可以先行擷取下一道指令。

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

▲馮‧紐曼架構,程式和資料儲存在同一個記憶體中。

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

▲哈佛架構,程式和資料分開儲存至不同的記憶體中。

在ARM10E的處理器架構升級為ARMv5TE,加入了VFP(向量浮點架構)的協同處理器,提升浮點數運算能力。

(後面還有智慧型手機應用大爆發)

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。
發表回應
謹慎發言,尊重彼此。按此展開留言規則