詳談ARM架構與ARM內核發展史


詳談ARM架構與ARM內核發展史


1、ARM架構與ARM內核

1.1 ARM架構與內核簡述

目前為止,ARM總共發佈8種架構:ARMv1、ARMv2、ARMv3、ARMv4、ARMv5、ARMv6、ARMv7 、ARMv8,這是ARM架構指令集的多個v版本。

基於不同的ARM架構可以設計出不同特點的內核處理器。比如基於ARMv3架構設計出的處理器ARM6、ARM7,這兩款處理器適用於不同的場景,硬件可能不同,但是架構指令集是一樣的。

好比蓋房子,剛開始因為水平低流行蓋平房,這就是一種架構(ARMv5),然後這種平房架構你可以設計出一款獨立衛生間的款式, 這叫ARM7內核。 然後其他人(芯片設計公司)想蓋房子的就買你這個圖紙去蓋,接著過一段時間,有人覺得光獨立衛生間還不夠啊, 我還想有個小院子! 好吧,那ARM就滿足你們的要求,出個帶小院子的款式(ARM9)。

即ARMv1/2/3等是指令集的架構,ARM7/9等是基於架構設計出的內核處理器。ARM的架構都是基於RISC指令集而設計的,內核是實現這一指令集的硬件架構的基礎。

1.2 ARM各架構之間區別

1.2.1 ARM版本Ⅰ:V1版架構

該版架構只在原型機ARM1出現過,只有26位的尋址空間,沒有用於商業產品。其基本性能有:

  • 基本的數據處理指令(無乘法);
  • 基於字節、半字和字的Load/Store指令;
  • 轉移指令,包括子程序調用及鏈接指令;
  • 供操作系統使用的軟件中斷指令SWI;
  • 尋址空間:64MB(226)。


1.2.2 ARM版本Ⅱ:V2版架構

該版架構對V1版進行了擴展,例如ARM2和ARM3(V2a)架構。包含了對32位乘法指令和協處理器指令的支持。

版本2a是版本2的變種,ARM3芯片採用了版本2a,是第一片採用片上Cache的ARM處理器。同樣為26位尋址空間,現在已經廢棄不再使用。V2版架構與版本V1相比,增加了以下功能:

  • 乘法和乘加指令;
  • 支持協處理器操作指令;
  • 快速中斷模式;
  • SWP/SWPB的最基本存儲器與寄存器交換指令;
  • 尋址空間:64MB。


1.2.3 ARM版本Ⅲ: V3版架構

ARM作為獨立的公司,在1990年設計的第一個微處理器採用的是版本3的ARM6。它作為IP核、獨立的處理器、具有片上高速緩存、MMU和寫緩衝的集成CPU。

變種版本有3G和3M。版本3G是不與版本2a向前兼容的版本3,版本3M引入了有符號和無符號數乘法和乘加指令,這些指令產生全部64位結果。V3版架構( 目前已廢棄 )對ARM體系結構作了較大的改動:

  • 尋址空間增至32位(4GB);
  • 當前程序狀態信息從原來的R15寄存器移到當前程序狀態寄存器CPSR中(Current Program Status Register);
  • 增加了程序狀態保存寄存器SPSR(SavedProgram Status Register);
  • 增加了兩種異常模式,使操作系統代碼可方便地使用數據訪問中止異常、指令預取中止異常和未定義指令異常。;
  • 增加了MRS/MSR指令,以訪問新增的CPSR/SPSR寄存器;
  • 增加了從異常處理返回的指令功能。


1.2.4 ARM版本Ⅳ: V4版架構

V4版架構在V3版上作了進一步擴充,V4版架構是目前應用最廣的ARM體系結構,ARM7、ARM8、ARM9和StrongARM都採用該架構。

V4不再強制要求與26位地址空間兼容,而且還明確了哪些指令會引起未定義指令異常。指令集中增加了以下功能:

  • 符號化和非符號化半字及符號化字節的存/取指令;
  • 增加了T變種,處理器可工作在Thumb狀態,增加了16位Thumb指令集;
  • 完善了軟件中斷SWI指令的功能;
  • 處理器系統模式引進特權方式時使用用戶寄存器操作;
  • 把一些未使用的指令空間捕獲為未定義指令


1.2.5 ARM版本Ⅴ: V5版架構

V5版架構是在V4版基礎上增加了一些新的指令,ARM10和Xscale都採用該版架構。這些新增命令有:

  • 帶有鏈接和交換的轉移BLX指令;
  • 計數前導零CLZ指令;
  • BRK中斷指令;
  • 增加了數字信號處理指令(V5TE版); 為協處理器增加更多可選擇的指令
  • 改進了ARM/Thumb狀態之間的切換效率;
  • E---增強型DSP指令集,包括全部算法操作和16位乘法操作;
  • J----支持新的JAVA,提供字節代碼執行的硬件和優化軟件加速功能。


1.2.6 ARM版本Ⅵ: V6版架構

V6版架構是2001年發佈的,首先在2002年春季發佈的ARM11處理器中使用。在降低耗電量地同時,還強化了圖形處理性能。通過追加有效進行多媒體處理的SIMD (Single Instruction, Multiple Data,單指令多數據 )功能,將語音及圖像的處理功能提高到了原型機的4倍。此架構在V5版基礎上增加了以下功能:

  • THUMBTM:35%代碼壓縮;
  • DSP擴充:高性能定點DSP功能;
  • JazelleTM:Java性能優化,可提高8倍;
  • Media擴充:音/視頻性能優化,可提高4倍


2、ARM產品型號

2.1 內核產品型號

基於各ARM架構設計的內核型號如下圖所示:

詳談ARM架構與ARM內核發展史


目前常見的指令集的說明:ARMv7之前均為32位總線位寬,從ARMv8開始擴展為64位總線位寬(數據總線、地址總線、控制總線位寬均為64位,一般尋址空間不會用滿)。

2.2 產品命名規則

ARM處理器命名規則和格式:ARM x y z T D M I E J F -S

  • x:序列
  • y:2:帶MMU, 4帶MPU,6沒有
  • z:0:標準cache,2:減小的cache, 6可變的cache
  • T:處理器支持Thumb指令集
  • D:支持JTAG調試器
  • M:支持長乘法指令
  • I:有嵌入式跟蹤宏單元
  • E:支持增強指令(基於TDMI)
  • J:支持JAVA硬件加速(Jazelle)
  • F:支持向量浮點單元
  • S:可綜合版本

2.3 內核產品應用

  • ARM7:ARMv4架構
  • ARM9:ARMv5架構
  • ARM11:ARMv6架構
  • ARM-Cortex 系列:ARMv7架構。


ARM7沒有MMU(內存管理單元),只能叫做MCU(微控制器),不能運行諸如Linux、WinCE等這些現代的多用戶多進程操作系統,因為運行這些系統需要MMU,才能給每個用戶進程分配進程自己獨立的地址空間。ucOS、ucLinux這些精簡實時的RTOS不需要MMU,當然可以在ARM7上運行。

ARM9、ARM11,是嵌入式CPU(處理器),帶有MMU,可以運行諸如Linux等多用戶多進程的操作系統,應用場合也不同於ARM7。

到了ARMv7架構的時候開始以Cortex來命名,並分成Cortex-A、Cortex-R、Cortex-M三個系列。三大系列分工明確:

  • “A”系列面向尖端的基於虛擬內存的操作系統和用戶應用;
  • “R”系列針對實時系統;
  • “M”系列對微控制器。簡單的說Cortex-A系列是用於移動領域的CPU,Cortex-R和Cortex-M系列是用於實時控制領域的MCU。

1、Cortex-M系列:M-Profile,即"Microntroller"- Profile,側重微控制器單片機方面的場合。

2、Cortex-R系列:R-Profile,即"Real-Time"-Profile,側重於實時系統的場合。

3、Cortex-A系列:A-Profile,即“Application”-Profile,側重於應用功能的場合。



分享到:


相關文章: