ARM的體系結(jié)構(gòu)與編程系列博客——ARM體系版本
掃描二維碼
隨時(shí)隨地手機(jī)看文章
ARM體系版本前言
很多人都知道,ARM有許多版本,口中最長說的就是ARM7ARM9ARM11,誠然,這個(gè)的確是ARM處理器的版本,但絕對(duì)不是ARM的版本,其實(shí)ARM到迄今為止經(jīng)歷了6代版本,隨著時(shí)代的變化,ARM也隨之變化,版本的不同其實(shí)也造就ARM的各種變種!
ARM處理器系列的各種處理器,其采用的技術(shù)各不相同,性能差異很大,應(yīng)用的場(chǎng)合也不相同,但只要它是同一個(gè)ARM體系版本,那么基于它們的應(yīng)用軟件是兼容的!
不難看出ARM的版本關(guān)系到了ARM的兼容性,如果你在開發(fā)過程中不了解版本的話,以為一切ARM的程序均在ARM處理器上可用的話,那么就大錯(cuò)特錯(cuò)了!
回到頂部
ARM體系版本介紹下面將為大家詳細(xì)的介紹ARM體系結(jié)構(gòu)的各類版本,給大家一個(gè)非常直觀的了解,知道ARM不同版本之間有什么樣的區(qū)別。
版本1ARM的版本為:版本1、版本2、版本3、版本4、版本5、版本6
乘法指令以外的基本數(shù)據(jù)處理指令
字節(jié)、字和多字的讀取寫入指令
包括子程序調(diào)用指令BL在內(nèi)的跳轉(zhuǎn)指令
供操作系統(tǒng)使用的軟件中斷指令SWI
版本2這個(gè)版本的地址空間是26位的,目前已經(jīng)不在使用了!
與版本1相比,版本2添加了下列指令:
乘法指令和乘加法指令(這2個(gè)指令在下篇博客中會(huì)解釋一下)
支持協(xié)處理器的指令
支持FIQ模式,提供額外的兩個(gè)備份寄存器
SWP指令及SWPB指令(各類指令都不要著急去了解,后面的幾篇博客都將詳細(xì)進(jìn)行介紹)
版本3該版本的地址空間是26位,目前也不使用了!
自這個(gè)版本開始,ARM出現(xiàn)了各種變種,是ARM質(zhì)一般的飛躍了!
地址空間擴(kuò)展到了32位(除了版本3G以為)
CPSR(當(dāng)前程序狀態(tài)寄存器)出現(xiàn),傳說中的R15消失
增加了SPSR(備份程序狀態(tài)寄存器),可以保存被中斷程序的狀態(tài)了!
添加了兩種處理器模式(方便操作系統(tǒng)使用各類異常)
增加了指令MRS與MSR(用來訪問新增的兩個(gè)寄存器)
修改了原來從異常返回的指令
版本4在版本3的基礎(chǔ)上,版本4可謂是真正地得到了推廣,值得一提的是Thumb指令集就是在這個(gè)版本上成立的!
半字讀寫指令出現(xiàn)
出現(xiàn)讀取帶符號(hào)的字節(jié)和半字?jǐn)?shù)據(jù)指令
有了T變種,即Thumb指令集
增加處理器的特權(quán)模式
版本5值得一提的是ARM公司終于不再要求支持26位的地址空間兼容(如此反我程序員的指令終于可以消失了,ARM公司,你造嗎?不是2的冪次方,我們程序員對(duì)它都是無愛的?。?/p>
提高了ARM/Thumb混合使用的效率(這一點(diǎn)太贊了,16位、32位的使用減少了很多的指令浪費(fèi))
整合了非T變種的指令代碼生成技術(shù),讓代碼生成得到了統(tǒng)一
增加了CLZ前導(dǎo)零計(jì)數(shù)指令
增加了BRK軟件斷點(diǎn)指令
增強(qiáng)型DSP指令集,包括全部算法操作和16位乘法操作
支持新的JAVA,提供字節(jié)代碼執(zhí)行的硬件和優(yōu)化軟件加速功能
版本6這個(gè)版本其實(shí)是2002年發(fā)布的ARM11處理器中使用的,主要是添加了SIMD功能擴(kuò)展,優(yōu)化視頻/音頻處理技術(shù)!版本6的到來也使android的系統(tǒng)更加火爆!
Thumb:35%代碼壓縮
DSP擴(kuò)充:高性能定點(diǎn)DSP功能
JazelleTM:Java性能優(yōu)化,可提高8倍
Media擴(kuò)充:音/視頻性能優(yōu)化,可提高4倍
我們可以從整個(gè)ARM體系版本的發(fā)展看出ARM技術(shù)的進(jìn)步,同時(shí)也需要我們對(duì)ARM有更加深入的了解,跟著ARM走,做逍遙的嵌入式開發(fā)工程師!