ARM体系架构—ARMv7-A处理器模式及寄存器

一、ARMv7-A处理器模式

在这里插入图片描述

ARMv7架构支持安全扩展,如果使能了安全扩展,ARMv7-A架构分为安全模式(Secure State)和非安全模式(Non-secure State)两个世界。
在非安全模式下,存在三种运行特权PL0,PL1和PL2(privilege level)。

If the Virtualization Extensions are implemented there is a privilege model different to that of previous architectures. In Non-secure state there can be three privilege levels, PL0, PL1 and PL2.

在这里插入图片描述

特权等级描述
PL0PL0运行在用户模式(User),用于运行应用程序。该模式程序受限访问系统资源。对应Linux用户态。
PL1PL1运行非用户模式和Hyp模式外的所有模式。Linux内核运行在PL1。包含了ARMv6架构中的System,SVC,FIQ,IRQ,UNDEF及Abort模式。此外,安全模式中的Montior也运行在PL1等级,管理安全模式和非安全模式的切换。
PL2PL2用于虚拟化。虚拟化超级管理程序(Hypervisor)运行在PL2。

二、ARMv7-A通用寄存器

ARMv7-A架构提供了16个32位通用寄存器(R0-R15)和一个程序状态寄存器CPSR(Current Program Status Register),在异常模式下,可以访问SPSR(Saved Program Status Register),在异常模式下,SPSR用于保存当前CPSR寄存器值。其中R0-R14可以用于普通数据存储,R15是程序计数器PC(program counter)。
在这里插入图片描述
以上寄存器可能因运行模式不同而对应不同的物理存储位置,上图中蓝色区域即如此,它们使用不同的物理存储,通常只有在进程以特定模式执行时才可访问。

  • R0-R7在任何模式下都对应相同的物理存储,称之为未分组寄存器;
  • R8-R14根据模式不同对应不同的物理存储,称之为分组寄存器;
  • R13(SP)在User和Sys模式下对应相同的物理存储,FIQ,IRQ,ABT,SVC,UND,MON,HYP模式分别对应不同的物理存储。R13在ARM架构中用于SP堆栈指针(stack pointer)。MON模式用于管理安全与非安全模式,HYP模式用于管理虚拟操作系统(GuestOS)。
  • R14(LR)在User,Sys和HYP模式下对应相同的物理存储,FIQ,IRQ,ABT,SVC,UND,MON模式分别对应不同的物理存储。R14在ARM架构中用于LR链接寄存器,在每种模式下,R14用于保存子程序返回地址。执行BL指令时,R14用于备份R15寄存器的值。
  • R15(PC)保存当前程序执行的地址。在所有模式下,R15(PC)共享相同的物理存储。在ARM状态下,[1:0]为0,[31:2]用于保存PC。在Thumb状态下,[0]为0,[31:1]用于保存PC。
  • CPSR是程序状态寄存器,保存条件标志位,中断禁止位,当前处理器模式等控制和状态位。每种异常模式下还存在SPSR,保存进入异常模式前的CPSR寄存器值,用于异常处理完成后恢复CPSR的状态。User和Sys不属于异常模式,没有CPSR寄存器,在User模式下,受限的CPSR寄存器称谓APSR( Application Program Status Register)。ARMv7-A中CPSR寄存器的信息如下图所示。
    CPSR bits

各Field代表含义如下:

Field作用
NALU返回运算结果是否为负数
ZALU返回运算结果是否为0
CALU运算是否发生进位
VALU运算是否发生溢出
Qcumulative saturation
JARM是否处于 Jazelle 状态
E控制load/store字节序
Adisables asynchronous aborts,User模式不能操作
I使能/去使能IRQ,User模式不能操作
F使能/去使能FIQ,User模式不能操作
TARM和Thumb状态标志位
GE用于某些SIMD(Single Instruction, Multiple Data)指令
M[4:0]处理器模式:FIQ,IRQ,ABT,SVC,UND,MON,HYP。User模式不能操作

三、ARMv7-A协处理器CP15寄存器

ARMv7-A架构保护系统控制协处理器CP15,主要用于处理存储系统相关的功能。CP15只能在特权模式下访问。CP15提供了16个32位主寄存器,命名为c0-c15。c0-c15寄存器可能对应多个不同的物理寄存器。

registerphysical register描述
c0MIDR主ID寄存器,用于记录厂商版本信息
MPIDRMultiprocessor Affinity Register
c1SCTLR系统控制寄存器
ACTLR辅助控制寄存器
CPACR协处理器访问控制寄存器,控制访问除了CP14和CP15的协处理器
SCR安全配置寄存器
c2 c3TTBR0一级转换页表基址寄存器0
TTBR1一级转换页表基址寄存器1
TTBCR页表转换控制寄存器
c5 c6DFSR数据异常(Data Fault)状态寄存器
IFSR指令异常(Instruction Fault)状态寄存器
DFAR数据异常(Data Fault)地址寄存器
IFAR指令异常(Instruction Fault)地址寄存器
c7 predictorcache及分支预测
barrier数据及指令屏障
c8TLBTLB操作
c9performance monitors性能监视器
c12 VBAR非安全模式异常基址寄存器
MVBAR安全模式异常基址寄存器
c13 ASID上下文ID寄存器,软件线程ID寄存器
c15CBAR配置基址寄存器,用于GIC(Generic Interrupt Controller)和定时器类型外设

协处理器CP15寄存器访问包括读和写操作。

  • 读操作即将CP15内的寄存器CRn的值读到通用寄存器Rt中,使用指令语法MRC, Op1, Rt, CRn, CRm, Op2;
  • 写操作即将通用寄存器Rt的值写入CP15内的寄存器CRn中,使用指令语法MCR, Op1, Rt, CRn, CRm, Op2;
    在这里插入图片描述
  • MRC:将CP15寄存器值读到ARM通用寄存器;
  • MCR:将ARM通用寄存器值写到CP15寄存器;
  • Op1 :协处理行为操作码;
  • Rt :ARM通用寄存器,不能是R15(PC);
  • CRn:协处理器CP15寄存器c0-c15;
  • CRm:附加目标寄存器,不需要附加信息,则设置为c0;
  • Op2 :区分同一编号不同的物理寄存器,例如分别访问c0中的MIDR和MPIDR,Op2值分别为0和1。默认情况下设置为0;

示例:
将CP15寄存器c0的MIDR寄存器读到R1中。

MRC p15, 0, R1, c0, c0, 0

四、系统控制寄存器CP15.SCTLR

系统控制寄存器SCTLR(System Control Register )用于控制内存,系统功能以及提供状态信息。

System Control Register bits

Field作用
TEThumb异常使能
NMFI不可屏蔽FIQ
EE异常字节序
U对齐模使用标志
FIFIQ配置使能
V选择异常向量表基址
I指令cache使能位
Z分支预测使能位
Ccache使能位
A对齐检测使能位
MMMU使能位

示例:
初始化CP15:SCTLR,使能Cache,指令Cache及分支预测功能。
在这里插入图片描述

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
ARM架构是一种广泛应用于嵌入式系统和移动设备的处理器架构ARM架构参考手册armv8主要针对ARMv8-A体系结构配置,其目标是为开发者提供一个详尽的指南,以便设计和开发基于ARMv8-A架构处理器ARMv8-A体系结构是ARMv8架构的一个子架构,它引入了一些新的特性和升级,旨在提供更高的性能和更强的安全性。该参考手册针对ARMv8-A架构的特定配置,详细介绍了处理器的功能、指令集、内存管理单元、异常处理、系统寄存器处理器状态等方面。 参考手册提供了一种便于开发者理解ARM体系结构的方式,以及如何在ARMv8-A处理器上编写和优化软件的指导。它包含了许多实用的信息,例如指令的编码方式、操作数的类型、寄存器的用途和指令的执行顺序。开发者可以根据参考手册提供的信息编写高效的代码,并且利用处理器中的各种功能来实现更复杂的计算任务。 在参考手册中,还介绍了一些ARMv8-A处理器的性能优化功能,如预取和缓存机制。这些优化功能可以帮助开发者在应用程序中提高性能,并且减少功耗。此外,ARM架构在安全方面也做出了很多改进,参考手册对于处理器的安全特性和相关的软件编程指导进行了深入的讲解。 总的来说,ARM架构参考手册armv8针对ARMv8-A体系结构提供了全面详细的指南,帮助开发者设计和开发基于该架构处理器。它是一本必备的参考资料,对于理解ARM处理器的特性和进行软件开发非常重要。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值