|
MIPS vs ARM的比較(從網路整理的資料)
[前言]; m/ r. ]! S. W8 ]5 Z' I# i
這是一個幾年以來我一直想做的“功課”,之所以稱之為“功課”,而不能說是“文章”,是因為我覺得自己的知識還遠遠不夠,不管是深度還是廣度,也 不管是全面性還是透徹性,我都不敢企及。但是我實在是很想把我的一些理解寫出來,然後能和其他朋友一起探討,糾正錯誤,補充完善,最終目的就是要加深對 ARM和MIPS 這兩種CPU架構的認識。; c' ?8 u, N, H% b* z4 r8 T
這裡的目前最多只能算個草稿吧,待以後不斷的補充。
# l* d, u7 ^* ~# l2 g, B- b1 N
+ }. f2 M' T* c" _5 V( o) R- i[正文]
# H. I; y5 F0 y( A- [1.流水線結構 pipeline T% q5 X( }' O8 ~
- MIPS 是最簡單的體系結構之一,所以使大學喜歡選擇 MIPS 體系結構來介紹計算體系結構課程。
; g9 V; u5 v+ u2 m- s - ARM has barrel shifter2 B. [: k$ [8 P. A: V2 D* I
shifter是兩面性的,一方面它可以提高數學邏輯運算速度,另一方面它也增加了硬體的複雜性。所以和可以完成同樣功能的adder/shift register相比,效率更高,但是也佔用更多的晶片面積。& v3 X- \, ]- g/ Y. j% k3 `
+ @5 h- L, v( x7 i - MIPS have "branch delay slot" and "load delay slot"
3 I/ n4 j! S+ B6 k MIPS使用編譯器來解決上面的兩個問題。因為MIPS最初的設計思想就是使用簡單的RISC硬體,然後靠編譯器及其他軟體技術,來達成RISC的完整概念。
% C* h+ F3 \: i- X5 H$ Y1 v% B% I' u: A9 L6 |
2.指令結構 instruction
& e7 j! Y. T" {! M - MIPS have 32bit and 64bit architecture,but ARM only have 32bit architecture( A0 Q T5 U U* ]) j
ARM11 局部64位元
8 O; M' N! {9 N! H6 U6 m - MIPS是開放式的架構,用戶可以在開發的內核中加入自己的指令,' j$ h3 A u) ~9 d
- ARM has 4-bit condition code in every instruction
' I' X7 k7 z9 |( T8 c ARM 在這一點很像x86。MIPS在MIPS IV也加入"conditional move"指令,來提高pipeline的效率。
4 j9 L/ d6 N' _; s. `1 Z5 q- C# E - ARM has pre- and post-increment addressing modes
" q9 d5 T) e4 N: P: U2 l* ]' w auto-increment/decrement on load/store instructions( G9 e- `6 n( L
- 在節省代碼空間方面,MIPS16 很類似ARM Thumb8 }; a7 k% H+ L% ^- q& g
$ l/ k, n1 v/ H9 S6 f
3.寄存器 register
: H' ] S0 v. E7 z+ B4 t/ b/ h -由於MIPS內核中有32個註冊器(Register),而ARM只有16個,這種結構設計上的先天優勢,決定了在同等性能表現下,MIPS的晶片面積和功耗會更小。& y' E2 x" x$ P
- ARM 有一組特殊用途寄存器cp0-cp15,可以使用MCR,MRC等指令控制;相對應的,MIPS也有cp0 0-30,使用mfc0,mtc0 指令控制。
/ b- w4 K& f+ V2 n4 c% D
0 D/ V% @1 Z: L5 e, @ - Register banking in ARM. r8-r12 FIQ mode;r13:SP r14R
! b/ a+ G: @0 M( V7 n. ]3 f6 R |( Z, Y 感覺不出banked register有什麼好處。3 S+ z. b% J' J2 E$ h5 E8 q$ X, G
- n1 b( R8 a) e1 @' \ - MIPS has a hard-wired-to-zero register ,but ARM not) r5 o) ]4 F5 P
MIPS use register $0 for Zero
- u5 \- P4 D& |. W. V* G" U5 f- `( Y8 }; a) d& b* p1 f: x
4.位址空間 address space! v( y* Q. n: k2 |$ T( e$ I
- MIPS 起始位址是0xbfc00000,會有4Mbyte的大小限制,但一般MIPS晶片都會採取一些方法解決這個問題。
5 z* I9 O1 s& X" I ARM沒有這種問題。# Y/ b! u# x4 K9 p9 @$ u, M$ |
MIPS24K 起始位址改到了0xbf000000,現在有16Mbyte的空間了。
/ e! z3 |7 E* p5 ]: j! g
; V& K+ O2 h7 Q$ | - MIPS don't have to turn paging on to enable the cache.
- |1 c1 a- M. L; a- C; u @- } MIPS have the address space for both cache and un-cache
& ? l6 C4 x* [( b: ]% ^0 h& n but ARM need enable/disable cache
; m7 b" h- L( R( q3 t/ v! [
& \/ \8 @# V' ?5.功能 function
$ R" ^; r9 }7 ~) t - Float point: MIPS64 has.
5 D% Z% L/ x3 W7 q# Z: n$ ]0 _ @ ARM's support for FP is limited, and usually not included, and it is a 32 bit architecture
% w4 ~) {/ f+ R$ q+ Q" H# V - ARM use JTAG,MIPS use EJTAG。Debug工具一般兩種都支援。使用起來感覺差不多。
% ^. S# d/ v) |; u" f+ \3 F. B7 D; n* W
6.性能 performance6 N3 S5 s+ Y- b
- 具體性能比較,因為差異性太大,所以很難分出誰好誰壞。從個人經驗來講 MIPS4k和ARM9基本上是同一個級別的,但ARM9性能似乎要比MIPS4K好。0 l" a0 X/ n8 f) W* t
同樣是32bit的MIPS24K性能上比MIPS4K有很大提升,也應該比ARM9要好些。6 s% q. w* Y h
因為沒有用過ARM11和MIPS34K的晶片,沒法比較,但感覺這兩個似乎是一個級別的。
* d2 L' S e6 U! c5 o8 `, E- o5 t
7.應用- o- `6 {! ^; q) v9 c9 P
- 在1000MHz以上的應用,很難找到採用ARM架構的產品。8 s$ d& e4 B |6 Z# Z$ ~/ L
MIPS架構用在200MHz或者是266MHz以下的應用比較少,而這恰恰是ARM的主攻市場。
! N/ s& D0 b0 I6 ^! {: L* n2 R( U - ARM 在手機等可擕式領域,MIPS 在住宅閘道、線纜數據機、線纜機上盒等/ K3 C. j6 @% `! T9 B/ ~
- ARM 採用硬核授權;MIPS 採用軟核授權,使用者可以自己配置,做自己的產品。% F4 ^0 O( Q7 a7 \- ~
2 O2 h# p* q0 `4 L6 B, [2 l
8.未來發展
: W) u. M: R3 } - ARM的下一代走向多內核結構,而MIPS公司的下一代核心則轉向硬體多執行緒功能(multithreading)
2 W9 }7 E4 Q! D5 K# Y MIPS 的multithreading 很類似Intel 的 HyperThreading技術。從現在的發展來看,多內核占上風。" {2 Y" Q7 Q0 g8 e7 e" q
, v: e' t% w5 K7 o8 v* D% l
9.總結0 l- b, `' ^7 P4 `' u/ I) r5 E
自己感覺ARM和MIPS在一開始的RISC的設計上有很多不同,但隨著技術的發展,各自揚長避短,好的技術大家都會使用。比如ARM11和MIPS R1000就使用了很多一樣的技術。感覺RISC做到了極至就都一樣了。 |
評分
-
查看全部評分
|