ARM体系架构—ARMv7-A协处理器
一、ARMv7-A协处理器
ARM体系架构支持协处理器,用于扩展ARM处理器功能。协处理器指令用于访问协处理器。协处理器支持16个协处理器,编号0-15,使用CP0-CP15(Coprocessor)描述。
CP0-CP15协处理器的基本功能如下:
- CP15:提供系统控制功能。包括架构和特性ID,以及控制,状态信息和配置支持。
- CP14:提供硬件Debug功能。
- CP10,CP11:共同支持浮点运算和向量操作。控制和配置浮点和高级SIMD扩展架构。
- CP8,9,12,13:为ARM架构保留协处理器。
- CP0-7:由厂家定义协处理功能。
二、CP15协处理器
CP15协处理器称之为系统控制协处理器,被用于控制和配置ARM处理器系统。其主要功能在于对系统内存的控制,包括cache,页表,TLB(Translation Lookaside Buffer),MMU(Memory Management Unit)等组件的控制。
除了对系统内存的控制外,CP15处理器还负责控制CP0-CP13的访问。CP0-CP13对于ARMv7-A架构可能是可选特性,其中CP10-CP11用于支持浮点运算指令,而CP0-CP7的实现由厂家定义。
2.1、CP15协处理器寄存器
CP15寄存器的实现和ARM体系架构的实现强相关:
- ARMv7-A实现VMSA (Virtual Memory System Architecture),支持虚拟地址,使用MMU(Memory Management Unit)管理地址空间;
- ARMv7-R实现PMSA (Protected Memory System Architecture),支持虚拟地址,使用MPU(Memory Protection Unit)管理地址空间;
本文只关心ARMv7-A架构。
CP15提供了16个32位主寄存器,命名为c0-c15。c0-c15寄存器可能对应多个不同的物理寄存器,常见的寄存器见下表。
register | physical register | 描述 |
---|---|---|
c0 | MIDR | 主ID寄存器,用于记录厂商版本信息 |
MPIDR | Multiprocessor Affinity Register | |
c1 | SCTLR | 系统控制寄存器 |
ACTLR | 辅助控制寄存器 | |
CPACR | 协处理器访问控制寄存器,控制访问除了CP14和CP15的协处理器 | |
SCR | 安全配置寄存器 | |
c2 c3 | TTBR0 | 一级转换页表基址寄存器0 |
TTBR1 | 一级转换页表基址寄存器1 | |
TTBCR | 页表转换控制寄存器 | |
c5 c6 | DFSR | 数据异常(Data Fault)状态寄存器 |
IFSR | 指令异常(Instruction Fault)状态寄存器 | |
DFAR | 数据异常(Data Fault)地址寄存器 | |
IFAR | 指令异常(Instruction Fault)地址寄存器 | |
c7 | predictor | cache及分支预测 |
barrier | 数据及指令屏障 | |
c8 | TLB | TLB操作 |
c9 | performance monitors | 性能监视器 |
c12 | VBAR | 非安全模式异常基址寄存器 |
MVBAR | 安全模式异常基址寄存器 | |
c13 | ASID | 上下文ID寄存器,软件线程ID寄存器 |
c15 | CBAR | 配置基址寄存器,用于GIC(Generic Interrupt Controller)和定时器类型外设 |
2.2、CP15协处理器寄存器组织
CP15协处理器保护c0-c15共16个寄存器,寄存器32位的组织形式如下: