嵌入式--ARM架構

liefyuan發表於2020-11-04

架構核心位寬第三方Cortex profile
ARMv132ARM1
ARMv232ARM2,
ARM250,
ARM3
ARMv332ARM6,
ARM7
ARMv432ARM11
ARMv4T32ARM7TDMI,
ARM9TDMI,
SecurCore SC100
ARMv5TE32ARM7EJ,
ARM9E,
ARM10E
XScale,
FA626TE,
Feroceon
ARMv632ARM11
ARMv6-M32ARM Cortex-M0,
ARM Cortex-M0+,
ARM Cortex-M1,
SecurCore SC000
ST stm8Microcontroller
ARMv7-M32ARM Cortex-M3,
SecurCore SC300
ST stm32f1Microcontroller
ARMv7E-M32ARM Cortex-M4,
ARM Cortex-M7
ST stm32f4/f7,
Nordic nrf52
Microcontroller
ARMv7-R32ARM Cortex-R4,
ARM Cortex-R5,
ARM Cortex-R7
Real-time
ARMv7-A32ARM Cortex-A5,
ARM Cortex-A7,
ARM Cortex-A8,
ARM Cortex-A9,
ARM Cortex-A12,
ARM Cortex-A15,
ARM Cortex-A17
Krait,
Scorpion,
Apple A6/A6x,
NXP i.mx6/mx7/mx8
Application
ARMv8-A64ARM Cortex-A35,
ARM Cortex-A53,
ARM Cortex-A57,
ARM Cortex-A72
X-Gene,
Nvidia Project Denver,
AMD K12,
Apple A7/A8/A9/A9x,
Cavium Thunder x,
Qualcomm Kryo
Application
ARMv8.1-A64TBAApplication
ARMv8-R32TBAReal-time
ARMv8-M32TBAMicrocontroller

產品分類

 ARM產品的分類可以按照ARMv1、ARMv2、ARMv3、ARMv4等構架來分類。從1983年開始,ARM核心共有ARM1、ARM2、ARM6、ARM7、ARM9、ARM10、ARM11和Cortex以及對應的修改版或增強版組成,越靠後的核心,初始頻率越高、架構越先進,功能也越強。架構和核心對應關係如下圖(擷取自維基百科:https://en.wikipedia.org/wiki/List_of_ARM_microarchitectures )所示:

ARM 自己設計的核心

在這裡插入圖片描述

ARM核心釋出時間

在這裡插入圖片描述

由具有ARM架構許可證的公司獨立開發的核心

 除了 ARM 公司自己設計的核心,還有些核心實現了ARM指令集,是由具有ARM架構許可證的公司獨立開發

在這裡插入圖片描述

經典ARM系列和Cortex系列

 ARM 處理器產品分為經典ARM處理器系列和最新的Cortex處理器系列:

在這裡插入圖片描述

Classic處理器介紹

 ARM7微處理器系列:1994年推出,使用範圍最廣的 32 位嵌入式處理器系列。 0.9MIPS/MHz的三級流水線和馮諾依曼結構。ARM7系列包括ARM7TDMI、ARM7TDMI-S、帶有快取記憶體處理器巨集單元的ARM720T。該系列處理器提供Thumb 16位壓縮指令集和EmbededICE軟體除錯方式,適用於更大規模的SoC設計中。ARM7TDMI基於ARM體系結構V4版本,是目前低端的ARM核。

 ARM9微處理器系列:ARM9採用哈佛體系結構,指令和資料分屬不同的匯流排,可以並行處理。在流水線上,ARM7是三級流水線,ARM9是五級流水線。由於結構不同,ARM7的執行效率低於ARM9。基於Arm9核心的處理器,是具有低功耗,高效率的開發平臺。廣泛用於各種嵌入式產品。它主要應用於音訊技術以及高檔工業級產品,可以跑Linux以及Wince等高階嵌入式系統,可以進行介面設計,做出人性化的人機互動介面,像一些網路產品和手機產品。

 ARM9E微處理器系列:ARM9E中的E就是Enhance instrcTIons,意思是增強型DSP指令,說明了ARM9E其實就是ARM9就一個擴充,變種。ARM9E系列微處理器為可綜合處理器,使用單一的處理器核心提供了微控制器、DSP、Java應用系統的解決方案,極大的減少了晶片的面積和系統的複雜程度。ARM9E系列微處理器提供了增強的DSP處理能力,很適合於那些需要同時使用DSP和微控制器的應用場合。

 ARM10E微處理器系列:ARM10E系列微處理器為可綜合處理器,使用單一的處理器核心提供了微控制器、DSP、Java應用系統的解決方案,極大的減少了晶片的面積和系統的複雜程度。ARM9E系列微處理器提供了增強的DSP處理能力,很適合於那些需要同時使用DSP和微控制器的應用場合。ARM10E與ARM9E區別在於,ARM10E使用哈佛結構,6級流水線,主頻最高可達325MHz,1.35MIPS/HZ。

 ARM11微處理器系列:ARM公司近年推出的新一代RISC處理器,它是ARM新指令架構——ARMv6的第一代設計實現。該系列主要有ARM1136J,ARM1156T2和ARM1176JZ三個核心型號,分別針對不同應用領域。ARM11的媒體處理能力和低功耗特點,特別適用於無線和消費類電子產品;其高資料吞吐量和高效能的結合非常適合網路處理應用;另外,也在實時效能和浮點處理等方面ARM11可以滿足汽車電子應用的需求。

Cortex系列介紹

 ARM公司在經典處理器ARM11以後的產品改用Cortex命名,並分成A、R和M三類,旨在為各種不同的市場提供服務。Cortex系列屬於ARMv7架構,由於應用領域不同,基於v7架構的Cortex處理器系列所採用的技術也不相同,基於v7A的稱為Cortex-A系列,基於v7R的稱為Cortex-R系列,基於v7M的稱為Cortex-M系列。

 Application Processors(應用處理器):面向移動計算,智慧手機,伺服器等市場的的高階處理器。這類處理器執行在很高的時脈頻率(超過1GHz),支援像Linux,Android,MS Windows和移動作業系統等完整作業系統需要的記憶體管理單元(MMU)。 如果規劃開發的產品需要執行上述其中的一個作業系統,你需要選擇ARM 應用處理器.

 Real-time Processors (實時處理器):面向實時應用的高效能處理器系列,例如硬碟控制器,汽車傳動系統和無線通訊的基帶控制。多數實時處理器不支援MMU,不過通常具有MPU、Cache和其他針對工業應用設計的儲存器功能。實時處理器執行在比較高的時脈頻率(例如200MHz 到 >1GHz ),響應延遲非常低。雖然實時處理器不能執行完整版本的Linux和Windows作業系統, 但是支援大量的實時作業系統(RTOS)。

 Microcontroller Processors(微控制器處理器):微控制器處理器通常設計成面積很小和能效比很高。通常這些處理器的流水線很短,最高時脈頻率很低(雖然市場上有此類的處理器可以執行在200Mhz之上)。 並且,新的Cortex-M處理器家族設計的非常容易使用。因此,ARM 微控制器處理器在微控制器和深度嵌入式系統市場非常成功和受歡迎。

 Cortex-M 處理器家族更多的集中在低效能端,但是這些處理器相比於許多微控制器使用的傳統處理器效能仍然很強大。例如,Cortex-M4 和 Cortex-M7 處理器應用在許多高效能的微控制器產品中,最大的時脈頻率可以達到400Mhz。

在這裡插入圖片描述
三個處理器系列的主要特徵

在這裡插入圖片描述


一、ARM架構與ARM核心

1.1 ARM架構與核心關係

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

 基於不同的ARM架構可以設計出不同特點的核心處理器p***essor。比如基於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(Saved Program 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倍

二、ARM產品型號

2.1 核心產品型號

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

https://blog.csdn.net/kinsor/article/details/37761989

https://blog.csdn.net/ZCShouCSDN/article/details/84393473

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,即"Mic***ontroller" -Profile,側重微控制器微控制器方面的場合。

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

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


參考部落格:https://blog.csdn.net/ZCShouCSDN/article/details/84393473

相關文章