arm - RISC微處理器
ARM處理器是Acorn計(jì)算機(jī)有限公司面向低預(yù)算市場(chǎng)設(shè)計(jì)的第一款RISC微處理器。更早稱作AcornRISCMachine。ARM處理器本身是32位設(shè)計(jì),但也配備16位指令集,一般來講比等價(jià)32位代碼節(jié)省達(dá)35%,卻能保留32位系統(tǒng)的所有優(yōu)勢(shì).
定義
ARM的Jazelle技術(shù)使Java加速得到比基于軟件的Java虛擬機(jī) - JVM高得多的性能,和同等的非Java加速核相比功耗降低80%。CPU功能上增加DSP指令集提供增強(qiáng)的16位和32位算術(shù)運(yùn)算能力,提高了性能和靈活性。ARM還提供兩個(gè)前沿特性來輔助帶深嵌入處理器的高集成SoC器件的調(diào)試,它們是嵌入式ICE-RT邏輯和嵌入式跟蹤宏核 - ETMS系列。
特點(diǎn)
ARM處理器的三大特點(diǎn)是:耗電少功能強(qiáng)、16位/32位雙指令集和合作伙伴眾多。
1、體積小、低功耗、低成本、高性能;
2、支持Thumb(16位)/ARM(32位)雙指令集,能很好的兼容8位/16位器件;
3、大量使用寄存器,指令執(zhí)行速度更快;
4、大多數(shù)數(shù)據(jù)操作都在寄存器中完成;
5、尋址方式靈活簡單,執(zhí)行效率高;
6、指令長度固定。
體系結(jié)構(gòu)
體系結(jié)構(gòu)
1?CISC(Complex Instruction Set Computer,復(fù)雜指令集計(jì)算機(jī))
在CISC指令集的各種指令中,大約有20%的指令會(huì)被反復(fù)使用,占整個(gè)程序代碼的80%。而余下的指令卻不經(jīng)常使用,在程序設(shè)計(jì)中只占20%。
2?RISC(Reduced Instruction Set Computer,精簡指令集計(jì)算機(jī))
RISC結(jié)構(gòu)優(yōu)先選取使用頻最高的簡單指令,避免復(fù)雜指令;將指令長度固定,指令格式和尋址方式種類減少;以控制邏輯為主,不用或少用微碼控制等
RISC體系結(jié)構(gòu)應(yīng)具有如下特點(diǎn):
1 采用固定長度的指令格式,指令歸整、簡單、基本尋址方式有2~3種。
2 使用單周期指令,便于流水線操作執(zhí)行。
3 大量使用寄存器,數(shù)據(jù)處理指令只對(duì)寄存器進(jìn)行操作,只有加載/存儲(chǔ)指令可以訪問存儲(chǔ)器,以提高指令的執(zhí)行效率。
除此以外,ARM體系結(jié)構(gòu)還采用了一些特別的技術(shù),在保證高性能的前提下盡量縮小芯片的面積,并降低功耗:
4 所有的指令都可根據(jù)前面的執(zhí)行結(jié)果決定是否被執(zhí)行,從而提高指令的執(zhí)行效率。
5 可用加載/存儲(chǔ)指令批量傳輸數(shù)據(jù),以提高數(shù)據(jù)的傳輸效率。
6 可在一條數(shù)據(jù)處理指令中同時(shí)完成邏輯處理和移位處理。
7 在循環(huán)處理中使用地址的自動(dòng)增減來提高運(yùn)行效率。
寄存器結(jié)構(gòu)
ARM處理器共有37個(gè)寄存器,被分為若干個(gè)組(BANK),這些寄存器包括:
1 31個(gè)通用寄存器,包括程序計(jì)數(shù)器(PC指針),均為32位的寄存器。
2 6個(gè)狀態(tài)寄存器,用以標(biāo)識(shí)CPU的工作狀態(tài)及程序的運(yùn)行狀態(tài),均為32位,只使用了其中的一部分。
指令結(jié)構(gòu)
ARM微處理器的在較新的體系結(jié)構(gòu)中支持兩種指令集:ARM指令集和Thumb指令集。其中,ARM指令為32位的長度,Thumb指令為16位長度。Thumb指令集為ARM指令集的功能子集,但與等價(jià)的ARM代碼相比較,可節(jié)省30%~40%以上的存儲(chǔ)空間,同時(shí)具備32位代碼的所有優(yōu)點(diǎn)。
體系結(jié)構(gòu)擴(kuò)充
當(dāng)前ARM體系結(jié)構(gòu)的擴(kuò)充包括:
·Thumb?16位指令集,為了改善代碼密度;
·DSP?DSP應(yīng)用的算術(shù)運(yùn)算指令集;
·Jazeller?允許直接執(zhí)行Java字節(jié)碼。
ARM處理器系列提供的解決方案有:
·無線、消費(fèi)類電子和圖像應(yīng)用的開放平臺(tái);
·存儲(chǔ)、自動(dòng)化、工業(yè)和網(wǎng)絡(luò)應(yīng)用的嵌入式實(shí)時(shí)系統(tǒng);
·智能卡和SIM卡的安全應(yīng)用。
主要模式
處理器工作模式說明
用戶模式 - usr?ARM處理器正常的程序執(zhí)行狀態(tài)
系統(tǒng)模式 - sys?運(yùn)行具有特權(quán)的操作系統(tǒng)任務(wù)
快中斷模式 - fiq?支持高速數(shù)據(jù)傳輸或通道處理
管理模式 - svc?操作系統(tǒng)保護(hù)模式
數(shù)據(jù)訪問終止模式 - abt?用于虛擬存儲(chǔ)器及存儲(chǔ)器保護(hù)
中斷模式 - irq?用于通用的中斷處理
未定義指令終止模式 - und?支持硬件協(xié)處理器的軟件仿真
除用戶模式外,其余6種模式稱為非用戶模式或特權(quán)模式;用戶模式和系統(tǒng)模式之外的5種模式稱為異常模式。ARM處理器的運(yùn)行模式可以通過軟件改變,也可以通過外部中斷或異常處理改變。
歷史發(fā)展
1978年12月5日,物理學(xué)家赫爾曼·豪澤(Hermann?Hauser)和工程師Chris?Curry,在英國劍橋創(chuàng)辦了CPU公司(Cambridge?Processing?Unit),主要業(yè)務(wù)是為當(dāng)?shù)厥袌?chǎng)供應(yīng)電子設(shè)備。1979年,CPU公司改名為Acorn公司。
起初,Acorn公司打算使用摩托羅拉公司的16位芯片,但是發(fā)現(xiàn)這種芯片太慢也太貴。"一臺(tái)售價(jià)500英鎊的機(jī)器,不可能使用價(jià)格100英鎊的CPU!"他們轉(zhuǎn)而向Intel公司索要80286芯片的設(shè)計(jì)資料,但是遭到拒絕,于是被迫自行研發(fā)。
Roger?Wilson和Steve?Furber
Roger?Wilson和Steve?Furber
1985年,Roger?Wilson和Steve?Furber設(shè)計(jì)了他們自己的第一代32位、6M?Hz的處理器,用它做出了一臺(tái)RISC指令集的計(jì)算機(jī),簡稱ARM(Acorn?RISC?Machine)。這就是ARM這個(gè)名字的由來。
RISC的全稱是"精簡指令集計(jì)算機(jī)"(reduced?instruction?set?computer),它支持的指令比較簡單,所以功耗小、價(jià)格便宜,特別適合移動(dòng)設(shè)備。早期使用ARM芯片的典型設(shè)備,就是蘋果公司的牛頓PDA。
20世紀(jì)80年代后期,ARM很快開發(fā)成Acorn的臺(tái)式機(jī)產(chǎn)品,形成英國的計(jì)算機(jī)教育基礎(chǔ)。
1990年11月27日,Acorn公司正式改組為ARM計(jì)算機(jī)公司。蘋果公司出資150萬英鎊,芯片廠商VLSI出資25萬英鎊,Acorn本身則以150萬英鎊的知識(shí)產(chǎn)權(quán)和12名工程師入股。公司的辦公地點(diǎn)非常簡陋,就是一個(gè)谷倉。20世紀(jì)90年代,ARM?32位嵌入式RISC - Reduced?lnstruction?Set?Computer處理器擴(kuò)展到世界范圍,占據(jù)了低功耗、低成本和高性能的嵌入式系統(tǒng)應(yīng)用領(lǐng)域的領(lǐng)先地位。ARM公司既不生產(chǎn)芯片也不銷售芯片,它只出售芯片技術(shù)授權(quán)。
在中國
ARM公司中國總部設(shè)立在上海,執(zhí)行中國地區(qū)所有的產(chǎn)品業(yè)務(wù)和售后支持。其中在深圳設(shè)有辦事處,專門處理ARM相關(guān)技術(shù)問題。
ARM在中國主要從事ARM?IP內(nèi)核方面的工作,對(duì)于?ARM軟件工具,包括DS-5,RVDS,MDK-ARM等則不直接進(jìn)行銷售,由其中國區(qū)代理商米爾科技作為渠道分銷商,負(fù)責(zé)銷售開發(fā)工具和客戶服務(wù)。
市場(chǎng)前景
微軟公司(2011年)宣布,下一版Windows將正式支持ARM處理器。這是計(jì)算機(jī)工業(yè)發(fā)展歷史上的一件大事,標(biāo)識(shí)著x86處理器的主導(dǎo)地位發(fā)生動(dòng)搖。在移動(dòng)設(shè)備市場(chǎng),ARM處理器的市場(chǎng)份額超過90%;在服務(wù)器市場(chǎng),2011年就會(huì)有2.5GHz的服務(wù)器上市;在桌面電腦市場(chǎng),又有了微軟的支持。ARM成為主流,恐怕指日可待。難怪有人驚呼,Intel公司將被擊敗!ARM微處理器核技術(shù)廣泛應(yīng)用于便攜式通信產(chǎn)品、手持運(yùn)算、多媒體和嵌入式解決方案等領(lǐng)域,已成為RISC的標(biāo)準(zhǔn)。
與這場(chǎng)轟轟烈烈的變革相比,它的主角ARM公司卻沒有受到太多的關(guān)注,顯得不太起眼。這家遠(yuǎn)離硅谷、位于劍橋大學(xué)的英國公司,到底是怎么走到打開市場(chǎng)的,居然能將芯片巨人Intel拉下馬?
展望未來,即使Intel成功地實(shí)施了Atom戰(zhàn)略,將x86芯片的功耗和價(jià)格大大降低,它與ARM競爭也將非常吃力。因?yàn)锳RM的商業(yè)模式是開放的,任何廠商都可以購買授權(quán),所以未來并不是Intel?vs.?ARM,而是Intel?vs.?世界上所有其他半導(dǎo)體公司。那樣的話,Intel的勝算能有多少呢?
2012年10月29日AMD做出了一個(gè)震驚業(yè)界的宣布:AMD將會(huì)設(shè)計(jì)基于64-bit?ARM架構(gòu)的處理器,首先從云和數(shù)據(jù)中心服務(wù)器領(lǐng)域開始。AMD、ARM在服務(wù)器領(lǐng)域的合作已經(jīng)得到了戴爾、惠普兩大服務(wù)器廠商,以及服務(wù)器系統(tǒng)廠商RedHat的鼎力支持,新的生態(tài)系統(tǒng)已具雛形,AMD能否借此東山再起?
AMD的首批ARM處理器于2014年問世,仍將披掛Opteron皓龍品牌。這種64位的多核心SoC會(huì)針對(duì)數(shù)據(jù)中心中份額最大的密集型高能效服務(wù)器進(jìn)行優(yōu)化,提供現(xiàn)代計(jì)算體驗(yàn),并整合收購而來的SeaMicro?Freedom超級(jí)計(jì)算光纖互聯(lián)技術(shù)。
系列產(chǎn)品
ARM7系列 ARM9系列 ARM9E系列 ARM10E系列
SecurCore系列 Intel的StrongARM?ARM11系列?Intel的Xscale
其中,ARM7、ARM9、ARM9E和ARM10為4個(gè)通用處理器系列,每一個(gè)系列提供一套相對(duì)獨(dú)特的性能來滿足不同應(yīng)用領(lǐng)域的需求。SecurCore系列專門為安全要求較高的應(yīng)用而設(shè)計(jì)。
Axxia?4500通信處理器基于采用28納米工藝的ARM?4核Cortex-A15處理器,并搭載ARM全新CoreLink?CCN-504高速緩存一致性互連技術(shù),實(shí)現(xiàn)安全低功耗和最佳性能。
ARM公司在經(jīng)典處理器ARM11以后的產(chǎn)品改用Cortex命名,并分成A、R和M三類,旨在為各種不同的市場(chǎng)提供服務(wù)。
ARM內(nèi)核
|
ARM內(nèi)核 |
||||||
|
家族 |
架構(gòu) |
內(nèi)核 |
特色 |
高速緩存 - I/D/MMU |
常規(guī)?MIPS于 MHz |
應(yīng)用 |
|
ARM1 |
ARMv1 |
ARM1 |
無 |
|||
|
ARM2 |
ARMv2 |
ARM2 |
Architecture 2 加入了MUL(乘法)指令 |
無 |
4 MIPS @ 8MHz |
Acorn Archimedes,Chessmachine |
|
ARMv2a |
ARM250 |
Integrated (完整的)MEMC - MMU,圖像與IO處理器。Architecture 2a 加入了SWP和SWPB(置換)指令。 |
無,MEMC1a |
7 MIPS@ 12MHz |
Acorn Archimedes |
|
|
ARM3 |
ARMv2a |
ARM2a |
首次在ARM架構(gòu)上使用處理器高速緩存 |
均為4K |
12 MIPS @ 25MHz |
Acorn Archimedes |
|
ARM6 |
ARMv3 |
ARM610 |
v3 架構(gòu)首創(chuàng)支援尋址32位的內(nèi)存(針對(duì)26位) |
均為4K |
28 MIPS @ 33MHz |
Acorn Risc PC 600,Apple Newton |
|
ARM7TDMI |
ARMv4T |
ARM7TDMI - -S |
三級(jí)流水線 |
無 |
15 MIPS @ 16.8 MHz |
Game Boy Advance,Nintendo DS,iPod |
|
ARM710T |
均為8KB, MMU |
36 MIPS @ 40 MHz |
Acorn Risc PC 700,Psion 5 series,Apple eMate 300 |
|||
|
ARM720T |
均為8KB, MMU |
60 MIPS @ 59.8 MHz |
Zipit |
|||
|
ARM740T |
MPU |
|||||
|
ARMv5TEJ |
ARM7EJ-S |
Jazelle DBX |
無 |
|||
|
ARM9TDMI |
ARMv4T |
ARM9TDMI |
五級(jí)流水線 |
無 |
||
|
ARM920T |
16KB/16KB, MMU |
200 MIPS @ 180 MHz |
Armadillo,GP32,GP2X(第一顆內(nèi)核), Tapwave Zodiac(Motorolai. MX1) |
|||
|
ARM922T |
8KB/8KB, MMU |
|||||
|
ARM940T |
4KB/4KB, MPU |
GP2X(第二顆內(nèi)核) |
||||
|
ARM9E |
ARMv5TE |
ARM946E-S |
可變動(dòng),tightly coupled memories, MPU |
Nintendo DS,NokiaN-GageConexant 802.11 chips |
||
|
ARM966E-S |
無高速緩存,TCMs |
ST Micro STR91xF,包含Ethernet [2] |
||||
|
ARM968E-S |
無高速緩存,TCMs |
|||||
|
ARMv5TEJ |
ARM926EJ-S |
Jazelle DBX |
可變動(dòng),TCMs, MMU |
220 MIPS @ 200 MHz |
移動(dòng)電話:Sony Ericsson(K, W系列),Siemens和?Benq(x65 系列和新版的) |
|
|
ARMv5TE |
ARM996HS |
無振蕩器處理器 |
無高速緩存,TCMs, MPU |
|||
|
ARM10E |
ARMv5TE |
ARM1020E |
- VFP,六級(jí)流水線 |
32KB/32KB, MMU |
||
|
ARM1022E |
- VFP |
16KB/16KB, MMU |
||||
|
ARMv5TE |
ARM1026EJ-S |
Jazelle DBX |
可變動(dòng),MMU or MPU |
|||
|
XScale |
ARMv5TE |
80200/IOP310/IOP315 |
I/O處理器 |
|||
|
80219 |
400/600MHz |
ThecusN2100 |
||||
|
IOP321 |
600?BogoMips600 MHz |
Iyonix |
||||
|
IOP33x |
||||||
|
IOP34x |
1-2核,RAID加速器 |
32K/32K L1, 512K L2, MMU |
||||
|
PXA210/PXA250 |
應(yīng)用處理器,七級(jí)流水線 |
ZaurusSL-5600 |
||||
|
PXA255 |
32KB/32KB, MMU |
400?BogoMips@400 MHz |
Gumstix,Palm TungstenE2 |
|||
|
PXA26x |
可達(dá) 400 MHz |
Palm Tungsten T3 |
||||
|
PXA27x |
800 MIPS 624 MHz |
HTCUniversal, ZaurusSL-C1000,3000,3100,3200, Dell Aximx30, x50,和 x51 系列 |
||||
|
PXA800 - EF |
||||||
|
Monahans |
1000 MIPS 1.25 GHz |
|||||
|
PXA900 |
Blackberry 8700, Blackberry Pearl - 8100 |
|||||
|
IXC1100 |
Control Plane Processor |
|||||
|
IXP2400/IXP2800 |
||||||
|
IXP2850 |
||||||
|
IXP2325/IXP2350 |
||||||
|
IXP42x |
NSLU2 |
|||||
|
IXP460/IXP465 |
||||||
|
ARM11 |
ARMv6 |
ARM1136J - F-S |
SIMD, Jazelle DBX, - VFP,八級(jí)流水線 |
可變動(dòng),MMU |
從 350 MHz 到1 GHz |
Nokia N93,Zune,Nokia N800 |
|
ARMv6T2 |
ARM1156T2 - F-S |
SIMD, Thumb-2, - VFP,九級(jí)流水線 |
可變動(dòng),MPU |
|||
|
ARMv6KZ |
ARM1176JZ - F-S |
SIMD, Jazelle DBX, - VFP |
可變動(dòng),MMU+TrustZone |
|||
|
ARMv6K |
ARM11 MPCore |
1-4核對(duì)稱多處理器,SIMD, Jazelle DBX, - VFP |
可變動(dòng),MMU |
|||
|
Cortex |
ARMv7-A |
Cortex-A8 |
Application profile, VFP, NEON, Jazelle RCT, Thumb-2, 13-stage pipeline |
可變動(dòng) - L1+L2, MMU+TrustZone |
up to 2000(2.0 DMIPS/MHz 從600 MHz到超過1 GHz的速度) |
Texas Instruments OMAP3 |
|
ARMv7-R |
Cortex-R4 - F |
Embedded profile, - FPU |
可變動(dòng)高速緩存,MMU可選配 |
600 DMIPS |
Broadcomis a user |
|
|
ARMv7-M |
Cortex-M3 |
Microcontroller profile |
無高速緩存, - MPU |
120 DMIPS @ 100MHz |
Luminary Micro[3]微控制器家族 |
|
新款A(yù)RMv8架構(gòu)ARMCortex-A50處理器系列產(chǎn)品,進(jìn)一步擴(kuò)大ARM在高性能與低功耗領(lǐng)域的領(lǐng)先地位。該系列率先推出的是Cortex-A53與Cortex-A57處理器以及最新節(jié)能64位處理技術(shù)與現(xiàn)有32位處理技術(shù)的擴(kuò)展升級(jí)。該處理器系列的可擴(kuò)展性使ARM的合作伙伴能夠針對(duì)智能手機(jī)、高性能服務(wù)器等各類不同市場(chǎng)需求開發(fā)系統(tǒng)級(jí)芯片(SoC)。
ARMCortex-A50處理器系列:
提供Cortex-A57與Cortex-A53兩款處理器,可選配密碼編譯加速器,為驗(yàn)證軟件提高10倍的運(yùn)行速度與ARMMali圖形處理器系列互用,適用于圖形處理器計(jì)算應(yīng)用具有AMBA系統(tǒng)一致性,與CCI-400、CCN-504等ARMCoreLink緩存一致性結(jié)構(gòu)組件達(dá)成多核心緩存一致性。
ARMCortex-A57處理器:
最先進(jìn)、單線程性能最高的ARM應(yīng)用處理器能提升,以滿足供智能手機(jī)從內(nèi)容消費(fèi)設(shè)備轉(zhuǎn)型為內(nèi)容生產(chǎn)設(shè)備的需求,并在相同功耗下實(shí)現(xiàn)最高可達(dá)現(xiàn)有超級(jí)手機(jī)三倍的性能計(jì)算能力可相當(dāng)于傳統(tǒng)PC,但僅需移動(dòng)設(shè)備的功耗成本即可運(yùn)行,無論企業(yè)用戶或普通消費(fèi)者均可享受低成本與低耗能針對(duì)高性能企業(yè)應(yīng)用提高了產(chǎn)品可靠度與可擴(kuò)展性。
ARMCortex-A53處理器:
史上效率最高的ARM應(yīng)用處理器,使用體驗(yàn)相當(dāng)于當(dāng)前的超級(jí)手機(jī),但功耗僅需其四分之一結(jié)合可靠性特點(diǎn),可擴(kuò)展數(shù)據(jù)平面(dataplane)應(yīng)用可將每毫瓦及每平方毫米性能發(fā)揮到極致針對(duì)個(gè)別線程計(jì)算應(yīng)用程序進(jìn)行了傳輸處理優(yōu)化Cortex-A53處理器結(jié)合Cortex-A57及ARM的big.LITTLE處理技術(shù),能使平臺(tái)擁有最大的性能范圍,同時(shí)大幅減少功耗。
設(shè)計(jì)文件
設(shè)計(jì)文件講求精簡又快速的設(shè)計(jì)方式,整體電路化卻又不采用微碼,就像早期使用在Acorn微電腦的8位6502處理器。
ARM架構(gòu)包含了下述RISC特性:
讀取/儲(chǔ)存?架構(gòu)不支援地址不對(duì)齊內(nèi)存存?。ˋRMv6內(nèi)核現(xiàn)已支援)正交指令集(任意存取指令可以任意的尋址方式存取數(shù)據(jù)Orthogonal?instruction?set)大量的16?×?32-bit?寄存器陣列(register?file)固定的32?bits?操作碼(opcode)長度,降低編碼數(shù)量所產(chǎn)生的耗費(fèi),減輕解碼和流水線化的負(fù)擔(dān)。大多均為一個(gè)CPU周期執(zhí)行。為了補(bǔ)強(qiáng)這種簡單的設(shè)計(jì)方式,相較于同時(shí)期的處理器如Intel?80286和Motorola?68020,還多加了一些特殊設(shè)計(jì):
大部分指令可以條件式地執(zhí)行,降低在分支時(shí)產(chǎn)生的負(fù)重,彌補(bǔ)分支預(yù)測(cè)器(branch?predictor)的不足。算數(shù)指令只會(huì)在要求時(shí)更改條件編碼(condition?code)32-bit筒型位移器(barrel?shifter)可用來執(zhí)行大部分的算數(shù)指令和尋址計(jì)算而不會(huì)損失效能強(qiáng)大的索引尋址模式(addressing?mode)精簡但快速的雙優(yōu)先級(jí)中斷子系統(tǒng),具有可切換的暫存器組有個(gè)附加在ARM設(shè)計(jì)中好玩的東西,就是使用一個(gè)4-bit?條件編碼?在每個(gè)指令前頭,表示每支指令的執(zhí)行是否為有條件式的
這大大的減低了在內(nèi)存存取指令時(shí)用到的編碼位,換句話說,它避免在對(duì)小型敘述如if做分支指令。有個(gè)標(biāo)準(zhǔn)的范例引用歐幾里德的最大公因子算法:
在C編程語言中,循環(huán)為:
int?gcd? - int?i,?int?j
{
while? - i?!=?j?if? - i?>?j?i?-=?j;?else?j?-=?i;?return?i;
}
在ARM?匯編語言中,循環(huán)為:
loop?CMP?Ri,?Rj?;
設(shè)定條件為?"NE" - 不等于?if? - i?!=?j?;?"GT" - 大于?if? - i?>?j,?;?or?"LT" - 小于?if? - i?<?j?SUBGT?Ri,?Ri,?Rj?;?若?"GT" - 大于,?i?=?i-j;?SUBLT?Rj,?Rj,?Ri?;?若?"LT" - 小于,?j?=?j-i;?BNE?loop?;?若?"NE" - 不等于,則繼續(xù)回圈這避開了then和else子句之間的分支。
另一項(xiàng)指令集的特色是,能將位移(shift)和回轉(zhuǎn)(rotate)等功能并成"資料處理"型的指令(算數(shù)、邏輯、和暫存器之間的搬移),因此舉例來說,一個(gè)C語言的敘述
a?+=? - j?<<?2;在ARM之下,可簡化成只需一個(gè)word和一個(gè)cycle即可完成的指令
ADD?Ra,?Ra,?Rj,?LSL?#2這結(jié)果可讓一般的ARM程式變得更加緊密,而不需經(jīng)常使用內(nèi)存存取,流水線也可以更有效地使用。即使在ARM以一般認(rèn)定為慢速的速度下執(zhí)行,與更復(fù)雜的CPU設(shè)計(jì)相比它仍能執(zhí)行得不錯(cuò)。
ARM處理器還有一些在其他RISC的架構(gòu)所不常見到的特色,例如PC-相對(duì)尋址(的確在ARM上PC為16個(gè)暫存器的其中一個(gè))以及?前遞加或后遞加的尋址模式。
另外一些注意事項(xiàng)是?ARM?處理器會(huì)隨著時(shí)間,不斷地增加它的指令集。某些早期的?ARM?處理器(比ARM7TDMI更早),譬如可能并未具備指令可以讀取兩?Bytes?的數(shù)量,因此,嚴(yán)格來講,對(duì)這些處理器產(chǎn)生程式碼時(shí),就不可能處理如?C?語言物件中使用?"volatile?short"?的資料型態(tài)。
ARM7?和大多數(shù)較早的設(shè)計(jì)具備三階段的流水線化(Pipeline):提取指令、解碼,并執(zhí)行。較高效能的設(shè)計(jì),如?ARM9,則有五階段的流水線化。提高效能的額外方式,包含一顆較快的加法器,和更廣的分支預(yù)測(cè)邏輯線路。
這個(gè)架構(gòu)使用“協(xié)處理器”提供一種非侵入式的方法來延伸指令集,可透過軟件下?MCR、MRC、MRRC和MCRR?等指令來對(duì)協(xié)處理器尋址。協(xié)處理器空間邏輯上通常分成16個(gè)協(xié)處理器,編號(hào)分別從?0?至?15?,而第15號(hào)協(xié)處理器(CP15)是保留用作某些常用的控制功能,像是使用高速緩存和記憶管理單元運(yùn)算(若包含于處理器時(shí))。
在?ARM?架構(gòu)的機(jī)器中,周邊裝置連接處理器的方式,通常透過將裝置的實(shí)體暫存器對(duì)應(yīng)到?ARM?的內(nèi)存空間、協(xié)處理器空間,或是連接到另外依序接上處理器的裝置(如總線)。協(xié)處理器的存取延遲較低,所以有些周邊裝置(例如?XScale?中斷控制器)會(huì)設(shè)計(jì)成可透過不同方式存?。ㄍ高^內(nèi)存和協(xié)處理器)。
Thumb
較新的ARM處理器有一種16-bit指令模式,叫做Thumb,也許跟每個(gè)條件式執(zhí)行指令均耗用4位的情形有關(guān)。在Thumb模式下,較小的opcode有更少的功能性。例如,只有分支可以是條件式的,且許多opcode無法存取所有CPU的暫存器。然而,較短的opcode提供整體更佳的編碼密度(注:意指程式碼在內(nèi)存中占的空間),即使有些運(yùn)算需要更多的指令。特別在內(nèi)存埠或總線寬度限制在32?以下的情形時(shí),更短的Thumb?opcode能更有效地使用有限的內(nèi)存帶寬,因而提供比32位程式碼更佳的效能。典型的嵌入式硬件僅具有較小的32-bit?datapath尋址范圍以及其他更窄的16?bits尋址(例如Game?Boy?Advance)。在這種情形下,通常可行的方案是編譯成?Thumb?程式碼,并自行最佳化一些使用(非Thumb)32位指令集的CPU相關(guān)程式區(qū),因而能將它們置入受限的32-bit總線寬度的內(nèi)存中。
首顆具備?Thumb?技術(shù)的處理器是?ARM7TDMI。所有?ARM9?和后來的家族,包括?XScale?都納入了?Thumb?技術(shù)。
Jazelle
ARM?還開發(fā)出一項(xiàng)技術(shù),Jazelle?DBX? - Direct?Bytecode?eXecution,允許它們?cè)谀承┘軜?gòu)的硬件上加速執(zhí)行Java?bytecode,就如其他執(zhí)行模式般,當(dāng)呼叫一些無法支援bytecodes的特殊軟件時(shí),能提供某些bytecodes的加速執(zhí)行。它能在現(xiàn)存的ARM與Thumb模式之間互相執(zhí)行。
首顆具備Jazelle技術(shù)的處理器是ARM926EJ-S:Jazelle以一個(gè)英文字母'J'標(biāo)示于CPU名稱中。它用來讓手機(jī)制造商能夠加速執(zhí)行Java?ME的游戲和應(yīng)用程式,也因此促使了這項(xiàng)技術(shù)不斷地開發(fā)。
Thumb-2
Thumb-2?技術(shù)首見于?ARM1156?核心?,并于2003年發(fā)表。Thumb-2?擴(kuò)充了受限的?16-bit?Thumb?指令集,以額外的?32-bit?指令讓指令集的使用更廣泛。因此?Thumb-2?的預(yù)期目標(biāo)是要達(dá)到近乎?Thumb?的編碼密度,但能表現(xiàn)出近乎?ARM?指令集在?32-bit?內(nèi)存下的效能。
Thumb-2也從?ARM?和?Thumb?指令集中派生出多種指令,包含位欄(bit-field)操作、分支建表(table?branches),和條件執(zhí)行等功能。
Thumb?Execution?Environment? - ThumbEE
ThumbEE,也就是所謂的Thumb-2EE,,業(yè)界稱為Jazelle?RCT技術(shù),于2005年發(fā)表,首見于?Cortex-A8?處理器。ThumbEE?提供從?Thumb-2?而來的一些擴(kuò)充性,在所處的執(zhí)行環(huán)境(Execution?Environment)下,使得指令集能特別適用于執(zhí)行階段(Runtime)的編碼產(chǎn)生(例如即時(shí)編譯)。Thumb-2EE?是專為一些語言如?Limbo、Java、C#、Perl?和?Python,并能讓即時(shí)編譯器?能夠輸出更小的編譯碼卻不會(huì)影響到效能。
ThumbEE?所提供的新功能,包括在每次存取指令時(shí)自動(dòng)檢查是否有無效指標(biāo),以及一種可以執(zhí)行陣列范圍檢查的指令,并能夠分支到分類器(handlers),其包含一小部份經(jīng)常呼叫的編碼,通常用于高階語言功能的實(shí)作,例如對(duì)一個(gè)新物件做內(nèi)存配置。
進(jìn)階?SIMD? - NEON
進(jìn)階?SIMD?延伸集,業(yè)界稱為NEON技術(shù),它是一個(gè)結(jié)合?64?和?128?bit?的?SIMD(Single?Instruction?Multiple?Data?單指令多重?cái)?shù)據(jù))指令集,其針對(duì)多媒體和訊號(hào)處理程式具備標(biāo)準(zhǔn)化加速的能力。NEON?可以在?10?MHz?的?CPU?上執(zhí)行?MP3?音效解碼,且可以執(zhí)行?13?MHz?頻率以下的?GSM?AMR? - Adaptive?Multi-Rate?語音編碼。NEON具有一組廣泛的指令集、各自的寄存器陣列,以及獨(dú)立執(zhí)行的硬件。NEON?支援?8-,?16-,?32-?和?64-bit?的整數(shù)及單精度浮點(diǎn)數(shù)據(jù),并以SIMD?的方式運(yùn)算,執(zhí)行圖形和游戲處理中關(guān)于語音/視訊的部分。SIMD?在?向量超級(jí)處理機(jī)?中是個(gè)決定性的要素,它具備同時(shí)多項(xiàng)處理功能。在?NEON?技術(shù)中,SIMD?最高可支援到同時(shí)?16?個(gè)運(yùn)算。
VFP
VFP?是在協(xié)同處理器針對(duì)ARM架構(gòu)的衍生技術(shù)。它提供低成本的單精度和倍精度浮點(diǎn)運(yùn)算能力,并完全相容于ANSI/IEEE?Std?754-1985?二進(jìn)制浮點(diǎn)算數(shù)標(biāo)準(zhǔn)。VFP?提供大多數(shù)適用于浮點(diǎn)運(yùn)算的應(yīng)用,例如PDA、智慧手機(jī)、語音壓縮與解壓、3D圖像以及數(shù)位音效、打印機(jī)、機(jī)上盒,和汽車應(yīng)用等。VFP?架構(gòu)也支援?SIMD(單指令多重?cái)?shù)據(jù))平行化的短向量指令執(zhí)行。這在圖像和訊號(hào)處理等應(yīng)用上,非常有助于降低編碼大小并增加輸出效率。
在ARM-based處理器中,其他可見的浮點(diǎn)、或?SIMD?的協(xié)同處理器還包括了?FPA,?FPE,?iwMMXt。他們提供類似?VFP?的功能但在opcode層面上來說并不具有相容性。
安全性擴(kuò)充? - TrustZone
TrustZone - TM?技術(shù)出現(xiàn)在?ARMv6KZ?以及較晚期的應(yīng)用核心架構(gòu)中。它提供了一種低成本的方案,針對(duì)系統(tǒng)單芯片(SoC)內(nèi)加入專屬的安全核心,由硬件建構(gòu)的存取控制方式支援兩顆虛擬的處理器。這個(gè)方式可使得應(yīng)用程式核心能夠在兩個(gè)狀態(tài)之間切換(通常改稱為領(lǐng)域(worlds)以避免和其他功能領(lǐng)域的名稱混淆),在此架構(gòu)下可以避免資訊從較可信的核心領(lǐng)域泄漏至較不安全的領(lǐng)域。這種內(nèi)核領(lǐng)域之間的切換通常是與處理器其他功能完全無關(guān)聯(lián)性(orthogonal),因此各個(gè)領(lǐng)域可以各自獨(dú)立運(yùn)作但卻仍能使用同一顆內(nèi)核。內(nèi)存和周邊裝置也可因此得知內(nèi)核運(yùn)作的領(lǐng)域?yàn)楹危⒛茚槍?duì)這個(gè)方式來提供對(duì)裝置的機(jī)密和編碼進(jìn)行存取控制。典型的?TrustZone?技術(shù)應(yīng)用是要能在一個(gè)缺乏安全性的環(huán)境下完整地執(zhí)行操作系統(tǒng),并在可信的環(huán)境下能有更少的安全性的編碼。
應(yīng)用選型
1、ARM微處理器內(nèi)核的選擇從前面所介紹的內(nèi)容可知,ARM微處理器包含一系列的內(nèi)核結(jié)構(gòu),以適應(yīng)不同的應(yīng)用領(lǐng)域,用戶如果希望使用WinCE或標(biāo)準(zhǔn)Linux等操作系統(tǒng)以減少軟件開發(fā)時(shí)間,就需要選擇ARM720T以上帶有MMU(Memory?Management?Unit)功能的ARM芯片,ARM720T、ARM920T、ARM922T、ARM946T、Strong-ARM都帶有MMU功能。而?ARM7TDMI則沒有MMU,不支持Windows?CE和標(biāo)準(zhǔn)Linux,但目前有uCLinux等不需要MMU支持的操作系統(tǒng)可運(yùn)行于ARM7TDMI硬件平臺(tái)之上。事實(shí)上,uCLinux已經(jīng)成功移植到多種不帶MMU的微處理器平臺(tái)上,并在穩(wěn)定性和其他方面都有上佳表現(xiàn)。
2、系統(tǒng)的工作頻率在很大程度上決定了ARM微處理器的處理能力。ARM7系列微處理器的典型處理速度為0.9MIPS/MHz,常見的ARM7芯片系統(tǒng)主時(shí)鐘為20MHz-133MHz,ARM9系列微處理器的典型處理速度為1.1MIPS/MHz,常見的ARM9的系統(tǒng)主時(shí)鐘頻率為100MHz-?233MHz,ARM10最高可以達(dá)到700MHz.不同芯片對(duì)時(shí)鐘的處理不同,有的芯片只需要一個(gè)主時(shí)鐘頻率,有的芯片內(nèi)部時(shí)鐘控制器可以分別為ARM?核和USB、UART、DSP、音頻等功能部件提供不同頻率的時(shí)鐘。
3、大多數(shù)的ARM微處理器片內(nèi)存儲(chǔ)器的容量都不太大,需要用戶在設(shè)計(jì)系統(tǒng)時(shí)外擴(kuò)存儲(chǔ)器,但也有部分芯片具有相對(duì)較大的片內(nèi)存儲(chǔ)空間,如ATMEL的AT91F40162就具有高達(dá)2MB的片內(nèi)程序存儲(chǔ)空間,用戶在設(shè)計(jì)時(shí)可考慮選用這種類型,以簡化系統(tǒng)的設(shè)計(jì)。
4、片內(nèi)外圍電路的選擇除ARM微處理器核以外,幾乎所有的ARM芯片均根據(jù)各自不同的應(yīng)用領(lǐng)域,擴(kuò)展了相關(guān)功能模塊,并集成在芯片之中,我們稱之為片內(nèi)外圍電路,如USB接口、IIS接口、LCD控制器、鍵盤接口、RTC、ADC和DAC、DSP協(xié)處理器等,設(shè)計(jì)者應(yīng)分析系統(tǒng)的需求,盡可能采用片內(nèi)外圍電路完成所需的功能,這樣既可簡化系統(tǒng)的設(shè)計(jì),同時(shí)提高系統(tǒng)的可靠性
相關(guān)新聞
搭載ARM芯片架構(gòu)的設(shè)備數(shù)量是英特爾的25倍。全世界99%的智能手機(jī)和平板電腦都采用ARM架構(gòu)。約有43億人每天都會(huì)觸摸一臺(tái)搭載ARM芯片的設(shè)備,占全球總?cè)丝诘?0%。
所有的iPhone和iPad都使用ARM的芯片,多數(shù)Kindle電子閱讀器和Android設(shè)備也都采用這一架構(gòu)。與這種廣泛觸角極不相稱的是,ARM的營收可以用少得可憐來形容。雖然全世界幾乎所有的智能手機(jī)幾乎都采用了該公司的芯片設(shè)計(jì),但平均每賣出一款這樣的手機(jī),該公司只能得到1美分,而英特爾的芯片單位收益卻高達(dá)數(shù)十至數(shù)百美元不等。
發(fā)展前景
ARM網(wǎng)絡(luò)陣營成員主要包括博通、Cavium和Freescale。其他合作包括與AMD一道為虛擬化軟件打造ENEA的合作、以及與AppliedMicro在虛擬機(jī)頂盒(vSTB)概念驗(yàn)證方面的合作。
大部分領(lǐng)先的網(wǎng)絡(luò)/電信制造商正積極地將其下一代平臺(tái)遷移到ARM平臺(tái)上來,有理由相信在今后的幾年中,ARM在行業(yè)中將扮演一個(gè)極為重要的角色。
