ARM的體系結構與程式設計系列部落格——ARM體系版本

King_Alex發表於2015-02-12

ARM體系版本前言

很多人都知道,ARM有許多版本,口中最長說的就是ARM7\ARM9\ARM11,誠然,這個的確是ARM處理器的版本,但絕對不是ARM的版本,其實ARM到迄今為止經歷了6代版本,隨著時代的變化,ARM也隨之變化,版本的不同其實也造就ARM的各種變種!

ARM處理器系列的各種處理器,其採用的技術各不相同,效能差異很大,應用的場合也不相同,但只要它是同一個ARM體系版本,那麼基於它們的應用軟體是相容的!

不難看出ARM的版本關係到了ARM的相容性,如果你在開發過程中不瞭解版本的話,以為一切ARM的程式均在ARM處理器上可用的話,那麼就大錯特錯了!

ARM體系版本介紹

下面將為大家詳細的介紹ARM體系結構的各類版本,給大家一個非常直觀的瞭解,知道ARM不同版本之間有什麼樣的區別。

ARM的版本為:版本1、版本2、版本3、版本4、版本5、版本6

版本1

  • 乘法指令以外的基本資料處理指令
  • 位元組、字和多字的讀取寫入指令
  • 包括子程式呼叫指令BL在內的跳轉指令
  • 供作業系統使用的軟體中斷指令SWI

這個版本的地址空間是26位的,目前已經不在使用了!

版本2

與版本1相比,版本2新增了下列指令:

  • 乘法指令和乘加法指令(這2個指令在下篇部落格中會解釋一下)
  • 支援協處理器的指令
  • 支援FIQ模式,提供額外的兩個備份暫存器
  • SWP指令及SWPB指令(各類指令都不要著急去了解,後面的幾篇部落格都將詳細進行介紹)

該版本的地址空間是26位,目前也不使用了!

版本3

自這個版本開始,ARM出現了各種變種,是ARM質一般的飛躍了!

  • 地址空間擴充套件到了32位(除了版本3G以為)
  • CPSR(當前程式狀態暫存器)出現,傳說中的R15消失
  • 增加了SPSR(備份程式狀態暫存器),可以儲存被中斷程式的狀態了!
  • 新增了兩種處理器模式(方便作業系統使用各類異常)
  • 增加了指令MRS與MSR(用來訪問新增的兩個暫存器)
  • 修改了原來從異常返回的指令

版本4

在版本3的基礎上,版本4可謂是真正地得到了推廣,值得一提的是Thumb指令集就是在這個版本上成立的!

  • 半字讀寫指令出現
  • 出現讀取帶符號的位元組和半字資料指令
  • 有了T變種,即Thumb指令集
  • 增加處理器的特權模式

值得一提的是ARM公司終於不再要求支援26位的地址空間相容(如此反我程式設計師的指令終於可以消失了,ARM公司,你造嗎?不是2的冪次方,我們程式設計師對它都是無愛的!)

版本5

  • 提高了ARM/Thumb混合使用的效率(這一點太讚了,16位、32位的使用減少了很多的指令浪費)
  • 整合了非T變種的指令程式碼生成技術,讓程式碼生成得到了統一
  • 增加了CLZ前導零計數指令
  • 增加了BRK軟體斷點指令
  • 增強型DSP指令集,包括全部演算法操作和16位乘法操作
  • 支援新的JAVA,提供位元組程式碼執行的硬體和優化軟體加速功能

版本6

這個版本其實是2002年釋出的ARM11處理器中使用的,主要是新增了SIMD功能擴充套件,優化視訊/音訊處理技術!版本6的到來也使android的系統更加火爆!

  • Thumb:35%程式碼壓縮
  • DSP擴充:高效能定點DSP功能
  • JazelleTM:Java效能優化,可提高8倍
  • Media擴充:音/視訊效能優化,可提高4倍

我們可以從整個ARM體系版本的發展看出ARM技術的進步,同時也需要我們對ARM有更加深入的瞭解,跟著ARM走,做逍遙的嵌入式開發工程師!

求關注,求鮮花~~~~

相關文章