ARM
ARM架構,過去稱作高級精簡指令集機器(Advanced RISC Machine,更早稱作:Acorn RISC Machine),是一個32位精簡指令集reduced instruction set computing(RISC)處理器架構,其廣泛地使用在許多嵌入式系統設計。由於節能的特點,ARM處理器非常適用於移動通信領域,符合其主要設計目標為低成本、高性能、低耗電的特性。
ARM is a family of instruction set architectures for computer processors based on a reduced instruction set computing (RISC) architecture developed by British company ARM Holdings.
A RISC-based computer design approach means ARM processors require significantly fewer transistors than typical CISC x86 processors in most personal computers. This approach reduces costs, heat and power use. These are desirable traits for light, portable, battery-powered devices—including smartphones, laptops, tablet and notepad computers, and other embedded systems. A simpler design facilitates more efficient multi-core CPUs and higher core counts at lower cost, providing improved energy efficiency for servers.
ARM 公司本身並不靠自有的設計來制造或出售 CPU ,而是將處理器架構授權給有興趣的廠家。ARM處理器可以在很多消費性電子產品上看到,從可攜式設備(PDA、移動電話、多媒體播放器、掌上型電子游戲,和計算機)到計算機外設(硬盤、桌面型路由器),甚至在導彈的彈載計算機等軍用設施中都有他的存在。在此還有一些基於ARM設計的派生產品,重要產品還包括Marvell的XScale架構和德州儀器的OMAP系列。
ARM Holdings develops the instruction set and architecture for ARM-based products, but does not manufacture products.
ARM架構包含了以下精簡指令集處理器的特性:
- 讀取/存儲 架構
- 不支持地址不對齊存儲器訪問(ARMv6內核現已支持)
- 正交指令集(任意訪問指令可以任意的尋址方式訪問數據Orthogonal instruction set)
- 大量的16 × 32-bit寄存器陣列(register file)
- 固定的32 bits操作碼(opcode)長度,降低編碼數量所產生的耗費,減輕解碼和流水線化的負擔。
- 大多均為一個CPU周期運行。
較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個條件式運行指令均耗用4位的情形有關。在Thumb模式下,較小的opcode有更少的功能性。更短的Thumb opcode能更有效地使用有限的存儲器帶寬,因而提供比32位代碼更佳的性能。Thumb-2技術首見於“ARM1156核心”,並於2003年發表。Thumb-2擴充了受限的16位Thumb指令集,以額外的32位指令讓指令集的使用更廣泛。因此Thumb-2的預期目標是要達到近乎Thumb的編碼密度,但能表現出近乎ARM指令集在32位存儲器下的性能。
To improve compiled code-density, processors since the ARM7TDMI have featured Thumb instruction set, which have their own state. (The "T" in "TDMI" indicates the Thumb feature.) When in this state, the processor executes the Thumb instruction set, a compact 16-bit encoding for a subset of the ARM instruction set. Most of the Thumb instructions are directly mapped to normal ARM instructions. The space-saving comes from making some of the instruction operands implicit and limiting the number of possibilities compared to the ARM instructions executed in the ARM instruction set state.
Announced in October 2011, ARMv8-A (often called ARMv8 although not all variants are 64-bit such as ARMv8-R) represents a fundamental change to the ARM architecture. It adds a 64-bit architecture, named "AArch64", and a new "A64" instruction set.
架構 |
處理器家族 |
ARMv1 |
ARM1 |
ARMv2 |
ARM2、ARM3 |
ARMv3 |
ARM6, ARM7 |
ARMv4 |
StrongARM、ARM7TDMI、ARM9TDMI |
ARMv5 |
ARM7EJ、ARM9E、ARM10E、XScale |
ARMv6 |
ARM11、ARM Cortex-M |
ARMv7 |
ARM Cortex-A、ARM Cortex-M、ARM Cortex-R |
ARMv8 |
Cortex-A50 |
X86
x86是一個指令集架構家族,最早由英特爾在“Intel 8086”CPU上開發出來。
x86 is a family of backward compatible instruction set architectures based on the Intel 8086 CPU.
該系列較早期的處理器名稱是以數字來表示80x86。由於以“86”作為結尾,包括Intel 8086、80186、80286、80386以及80486,因此其架構被稱為“x86”。由於數字並不能作為注冊商標,因此Intel及其競爭者均在新一代處理器使用可注冊的名稱,如Pentium。現時英特爾把x86-32稱為IA-32,全名為“Intel Architecture, 32-bit”;不過,由於x86包括16位處理器,這樣的命名也出現麻煩。
8086是16位處理器;直到1985年32位的80386的開發,這個架構都維持是16位。接着一系列的處理器表示了32位架構的細微改進,推出了數種的擴充,直到2003年AMD對於這個架構發展了64位的擴充,並命名為AMD64。后來英特爾也推出了與之兼容的處理器,並命名為Intel 64。兩者一般被統稱為x86-64或x64,開創了x86的64位時代。
英特爾早在1990年代就與惠普合作提出了一種用在安騰系列處理器中的獨立的64位架構,這種架構被稱為IA-64。IA-64是一種嶄新的系統,和x86架構完全沒有相似性;不應該把它與x86-64或x64弄混。
x86架構是重要地可變指令長度的CISC(復雜指令集計算機,Complex Instruction Set Computer)。字組(word, 4位組)長度的存儲器訪問允許不對齊存儲器地址,字組是以低位字節在前的順序存儲在存儲器中。向后兼容性一直都是在x86架構的發展背后一股驅動力量(設計的需要決定了這項因素而常常導致批評,尤其是來自對手處理器的擁護者和理論界,他們對於一個被廣泛認為是落后設計的架構的持續成功感到不解)。但在較新的微架構中,x86處理器會把x86指令轉換為更像RISC的微指令再予執行,從而獲得可與RISC比擬的超標量性能,而仍然保持向前兼容。x86架構的處理器一共有四種執行模式,分別是真實模式,保護模式,系統管理模式以及虛擬V86模式。
操作碼長度為1、2或3字節,此外ModR/M中還可能有3位。對於雙字節指令碼或三字節指令碼,其中的第1個字節為0FH,用於與指令前綴區分。
在1999年Intel推出SSE指令集,增加了八個新的128-bit暫存器(不跟其他的暫存器重疊使用)。這些指令類似於AMD的3DNow!,主要是增加浮點數運算的SIMD指令。
MIPS
MIPS架構(英語:MIPS architecture,為Microprocessor without Interlocked Pipeline Stages的縮寫,亦為Millions of Instructions Per Second的相關語),是一種采取精簡指令集(RISC)的處理器架構,1981年出現,由MIPS科技公司開發並授權,廣泛被使用在許多電子產品、網絡設備、個人娛樂裝置與商業裝置上。最早的MIPS架構是32位元,最新的版本已經變成64位元。
MIPS cores have been commercially successful, now being used in many consumer and industrial applications. MIPS cores can be found in newer Cisco, Linksys and Mikrotik's routerboard routers, cable modems and ADSL modems, smartcards, laser printer engines, set-top boxes, robots, handheld computers, Nintendo 64, Sony PlayStation 2 and Sony PlayStation Portable. In cellphone/PDA applications, MIPS has been largely unable to displace the incumbent, competing ARM architecture.
ARM與MIPS平台優劣對比分析
摘自:http://www.cnblogs.com/xmphoenix/archive/2011/11/02/2233397.html
1.流水線結構 pipeline
– MIPS 是最簡單的體系結構之一,所以使大學喜歡選擇 MIPS 體系結構來介紹計算體系結構課程。
– ARM has barrel shifter
shifter是兩面性的,一方面它可以提高數學邏輯運算速度,另一方面它也增加了硬件的復雜性。所以和可以完成同樣功能的adder/shift register相比,效率更高,但是也占用更多的芯片面積。
– MIPS have “branch delay slot” and “load delay slot”
MIPS使用編譯器來解決上面的兩個問題。因為MIPS最初的設計思想就是使用簡單的RISC硬體,然后靠編譯器及其他軟體技術,來達成RISC的完整概念。
2.指令結構 instruction
– MIPS have 32bit and 64bit architecture,but ARM only have 32bit architecture
ARM11 局部64位
– MIPS是開放式的架構,用戶可以在開發的內核中加入自己的指令,
– ARM has 4-bit condition code in every instruction
ARM 在這一點很像x86。MIPS在MIPS IV也加入”conditional move”指令,來提高pipeline的效率。
– ARM has pre- and post-increment addressing modes
auto-increment/decrement on load/store instructions
– 在節省代碼空間方面,MIPS16 很類似ARM Thumb
3.寄存器 register
-由於MIPS內核中有32個寄存器(Register),而ARM只有16個,這種結構設計上的先天優勢,決定了在同等性能表現下,MIPS的芯片面積和功耗會更小。
– ARM 有一組特殊用途寄存器cp0-cp15,可以使用MCR,MRC等指令控制;相對應的,MIPS也有cp0 0-30,使用mfc0,mtc0 指令控制。
– Register banking in ARM. r8-r12 FIQ mode;r13:SP r14:LR
感覺不出banked register有什么好處。
– MIPS has a hard-wired-to-zero register ,but ARM not
MIPS use register $0 for Zero
4.地址空間 address space
– MIPS 起始地址是0xbfc00000,會有4Mbyte的大小限制,但一般MIPS芯片都會采取一些方法解決這個問題。
ARM沒有這種問題。
MIPS24K 起始地址改到了0xbf000000,現在有16Mbyte的空間了。
– MIPS don’t have to turn paging on to enable the cache.
MIPS have the address space for both cache and un-cache
but ARM need enable/disable cache
5.功能 function
– Float point: MIPS64 has.
ARM’s support for FP is limited, and usually not included, and it is a 32 bit architecture
– ARM use JTAG,MIPS use EJTAG。Debug工具一般兩種都支持。使用起來感覺差不多。
6.性能 performance
– 具體性能比較,因為差異性太大,所以很難分出誰好誰壞。從個人經驗來講 MIPS4k和ARM9基本上是同一個級別的,但ARM9性能似乎要比MIPS4K好。
同樣是32bit的MIPS24K性能上比MIPS4K有很大提升,也應該比ARM9要好些。
因為沒有用過ARM11和MIPS34K的芯片,沒法比較,但感覺這兩個似乎是一個級別的。
Cortex-A8和 MIPS 74K都是最新的設計,應該性能也差不多。
7.應用
– 在1000MHz以上的應用,很難找到采用ARM架構的產品。
MIPS架構用在200MHz或者是266MHz以下的應用比較少,而這恰恰是ARM的主攻市場。
– ARM 由於功耗小,普遍用在在手機/PDA等便攜式消費電子領域; MIPS 在住宅網關、線纜調制解調器、線纜機頂盒等,由於MIPS 多核的發展,現在大型網關設備也多用它。
– ARM 采用硬核授權;MIPS 采用軟核授權,用戶可以自己配置,做自己的產品。
8.未來發展
– ARM的下一代走向多內核結構,而MIPS公司的下一代核心則轉向硬件多線程功能(multithreading)
MIPS 的multi-threading 很類似Intel 的 HyperThreading技術。從現在的發展來看,多內核占上風。
2008.12.21: 其實今天看來,也不好妄自評論孰好孰壞,雖說, HT技術在intel上發展並不好(已經基本被dual core)代替,但是並不能推斷說MT在MIPS上就發展不好,畢竟mips的應用場合多是嵌入式領域,而MT的功耗小芯片面積小的優勢正好能發揮作用。
2008.12.29: MIPS也並不是只有multithreading, 其實現在很多的MIPS cpu的廠商都有multi-core的mips cpu在出,比如cavium, broadcom, infineon,國內的龍芯也有多核的產品。
2009.6.11: MIPS的多核發展顯然比ARM要好。從 Cavium,RMI,公司的產品大量的應用便可見一斑。
9.總結
自己感覺ARM和MIPS在一開始的RISC的設計上有很多不同,但隨着技術的發展,各自揚長避短,好的技術大家都會使用。比如ARM11和MIPS R1000就使用了很多一樣的技術。感覺RISC做到了極至就都一樣了。