天天看點

【ARM自學筆記】Cortex-A7 架構簡介運作模型寄存器組

簡介

Cortex-A7 MPCore 處理器支援1~4核,通常是和Cortex-A15組成 big.LITTLE架構。

在此架構中,Cortex-A15 作為大核負責高性能運算,而Cortex-A7負責普通應用(相對來說較為省電)

官方性能說明:

在 28nm 工藝下, Cortex-A7 可以運作在 1.2~1.6GHz,并且單核面積不大于 0.45mm2(含

有浮點單元、 NEON 和 32KB 的 L1 緩存),在典型場景下功耗小于 100mW, 這使得它非常适

合對功耗要求嚴格的移動裝置,這意味着 Cortex-A7 在獲得與 Cortex-A9 相似性能的情況下,

其功耗更低

Cortex-A7 MPCore 多核配置如下:

【ARM自學筆記】Cortex-A7 架構簡介運作模型寄存器組

Cortex-A7 MPCore 的 L1 可選擇 8KB、 16KB、 32KB、 64KB, L2 Cache 可以不配,也可以選擇 128KB、 256KB、 512KB、 1024KB。

ARMv7-A架構,主要特性:

  1. SIMDv2 擴充整形和浮點向量操作。
  2. 提供了與 ARM VFPv4 體系結構相容的高性能的單雙精度浮點指令,支援全功能的IEEE754。
  3. 支援大實體擴充(LPAE),最高可以通路 40 位存儲位址,也就是最高可以支援 1TB 的記憶體。
  4. 支援硬體虛拟化。
  5. 支援 Generic Interrupt Controller(GIC)V2.0。
  6. 支援 NEON,可以加速多媒體和信号處理算法

運作模型

一共有9種處理模式。

模式 描述
User(USR) 使用者模式,非特權模式,大部分程式運作的時候就處于此模式。
FIQ 快速中斷模式,進入 FIQ 中斷異常
IRQ 一般中斷模式。
Supervisor(SVC) 超級管理者模式,特權模式,供作業系統使用。
Monitor(MON) 監視模式,這個模式用于安全擴充模式。
Abort(ABT) 資料通路終止模式,用于虛拟存儲以及存儲保護。
Hyp(HYP) 超級監視模式,用于虛拟化擴充
Undef(UND) 未定義指令終止模式。
System(SYS) 系統模式,用于運作特權級的作業系統任務

除User使用者模式外,其餘8種模式都是特權模。

大多數程式都運作在使用者模式,使用者模式下有些資源是受限制,使用者模式不能直接進行切換,使用者模式需要借助異常來完成模式的切換。

寄存器組

ARM架構提供了16個32位得通用寄存器(R0R15)供軟體使用,前15個(R0R14)可以用作通用得資料存儲,R15是程式計數器PC,用來儲存将要執行得指令。ARM還提供了一個目前程式章台寄存器CPSR和一個備份程式狀态寄存器SPSR,SPSR寄存器就是CPSR寄存器得備份。

【ARM自學筆記】Cortex-A7 架構簡介運作模型寄存器組

Cortex-A7 有9種運作模式,每一種運作模式都有一組與之對應的寄存器組。每一種模式可見的寄存器包括 15 個通用寄存器(R0~R14)、一兩個程式狀态寄存器和一個程式計數器 PC。

有些是所有模式所共用的同一個實體寄存器,有些是各模式獨立擁有。如下圖:

【ARM自學筆記】Cortex-A7 架構簡介運作模型寄存器組

圖中,淺色的為與User模式所共有的寄存器,藍綠色的是各個模式所讀有的寄存器

總結:Cortex-A核心寄存器共有43個寄存器,分别為:

  1. 34個通用寄存器(32位),包括R15程式計數器(PC)
  2. 8個狀态寄存器,包括CPSR和SPSR
  3. 1個ELR_Hyp寄存器(Hyp模式下)

通用寄存器

R0~R15為通用寄存器,分為以下三類:

  1. 未備份寄存器,R0~R7
  2. 備份寄存器,R8~R14
  3. 程式計數器PC,R15

未備份寄存器

在所有的處理模式下,這8個寄存器都是同一個實體寄存器。切換模式,資料就會被破壞掉

備份寄存器

備份寄存器中的R8~R12這5個寄存器有兩種實體寄存器,在快速中斷模式下(FIQ)它們對應着 Rx_irq(x=8~12)實體寄存器,其他模式下對應着 Rx(8~12)實體寄存器。 FIQ 是快速中斷模式。 FIQ模式下中斷處理程式可以使用 R8~R12寄存器,因為FIQ模式下的 R8~R12是獨立的,是以中斷處理程式可以不用執行儲存和恢複中斷現場的指令,進而加速中斷的執行過程。

備份寄存器R13一共有8個實體寄存器,其中一個是使用者模式(User)和系統模式(Sys)共用的,剩下的7個分别對應7種不同的模式。R13也叫做SP,用來做為棧指針。基本上每種模式都有一個自己的 R13實體寄存器,應用程式會初始化R13,使其指向該模式專用的棧位址,這就是常說的初始化SP指針。

備份寄存器R14一共有7個實體寄存器,其中一個是使用者模式(User)、系統模式(Sys)和超級監視模式(Hyp)所共有的,剩下的6個分别對應6種不同的模式。

R14也稱為連接配接寄存器(LR),主要有以下兩種用途:

  1. 每種處理器模式使用 R14(LR)來存放目前子程式的傳回位址,如果使用 BL 或者 BLX來調用子函數的話, R14(LR)被設定成該子函數的傳回位址,在子函數中,将 R14(LR)中的值賦給 R15(PC)即可完成子函數傳回。
  2. 當異常發生以後,該異常模式對應的 R14 寄存器被設定成該異常模式将要傳回的位址,

    R14 也可以當作普通寄存器使用。

程式計數器R15

程式計數器R15也叫做PC,R15儲存着目前執行的指令位址值加8個位元組,這是因為ARM的流水線機制導緻的。

ARM處理器3級流水線:

  1. 取值
  2. 義馬
  3. 執行

    這三個過程循環執行。比如目前正在執行第一條指令的同時也對第二條指令進行譯碼,第三條指令也同時被取出存放在 R15(PC)中。我們喜歡以目前正在執行的指令作為參考點,也就是以第一條指令為參考點,那麼R15(PC)中存放的就是三條指令,換句話說就是 R15(PC)總是指向目前正在執行的指令位址再加上 2 條指令的位址。對于 32 位的 ARM 處理器,每條指令是 4 個位元組,是以:

R15(PC)值 = 目前執行的程式位置 + 8個位元組
           

程式狀态寄存器

所有的模式都共用一個CPSR實體寄存器,CPSR可以在任何模式下被通路。

該寄存器包括: 條件标志位、中斷禁止位、目前處理器模式标志等一些狀态位以及一些控制位。

除了 User 和 Sys 這兩個模式以外,其他7個模式每個都配備了一個專用的實體狀态寄存器,叫做SPSR(備份程式狀态寄存器),當特定的異常中斷發生時, SPSR寄存器用來儲存目前程式狀态寄存器(CPSR)的值,當異常退出以後可以用 SPSR 中儲存的值來恢複 CPSR。

【ARM自學筆記】Cortex-A7 架構簡介運作模型寄存器組
  • N(bit31):當兩個補碼表示的 有符号整數運算的時候, N=1 表示運算對的結果為負數, N=0表示結果為正數。
  • Z(bit30): Z=1 表示運算結果為零,Z=0表示運算結果不為零,對于CMP指令,Z=1表示進行比較的兩個數大小相等
  • C(bit29):在加法指令中,當結果産生了進位,則C=1,表示無符号數運算發生上溢,其它情況下C=0。在減法指令中,當運算中發生借位,則 C=0,表示無符号數運算發生下溢,其它情況下C=1。對于包含移位操作的非加/減法運算指令, C 中包含最後一次溢出的位的數值,對于其它非加/減運算指令, C 位的值通常不受影響。
  • V(bit28): 對于加/減法運算指令,當操作數和運算結果表示為二進制的補碼表示的帶符号數時,V=1表示符号位溢出,通常其他位不影響 V 位。
  • Q(bit27): 僅 ARM v5TE_J 架構支援,表示飽和狀态, Q=1 表示累積飽和, Q=0 表示累積不飽和。
  • IT1:0: 和 IT7:2一起組成 IT[7:0],作為 IF-THEN 指令執行狀态。
  • J(bit24): 僅 ARM_v5TE-J架構支援,J=1表示處于Jazelle狀态,此位通常和T(bit5)位一起表示目前所使用的指令集。
J T 描述
1 ARM
1 Thumb
1 1 ThumbEE
1 Jazelle
  • GE3:0: SIMD 指令有效,大于或等于。
  • IT7:2: 參考 IT[1:0]。
  • E(bit9): 大小端控制位, E=1 表示大端模式, E=0 表示小端模式。
  • A(bit8): 禁止異步中斷位, A=1 表示禁止異步中斷。
  • I(bit7): I=1 禁止 IRQ, I=0 使能 IRQ。
  • F(bit6): F=1 禁止 FIQ, F=0 使能 FIQ。
  • T(bit5): 控制指令執行狀态,表明本指令是 ARM 指令還是Thumb 指令,通常和J(bit24)一起表明指令類型,參考 J(bit24)位。
  • M[4:0]: 處理器模式控制位,如下表所示:
M[4:0] 處理器模式
10000 User 模式
10001 FIQ 模式
10010 IRQ 模式
10011 Supervisor(SVC)模式
10110 Monitor(MON)模式
10111 Abort(ABT)模式
11010 Hyp(HYP)模式
11011 Undef(UND)模式
11111 System(SYS)模式

繼續閱讀