3 系统控制本章介绍用于控制处理器运行的各类寄存器涵盖以下模块内的寄存器系统控制空间访问控制空间标识信息空间缓存维护空间3.1 寄存器概览本节介绍以下为本处理器专属实现的系统控制寄存器3.1.1 Auxiliary Control Register(ACTLR)项目内容功能用途提供处理器实现自定义的配置与控制选项。使用约束无使用约束。配置版本所有内核配置版本均支持该寄存器。属性说明见下表位域名称功能说明[31:29]—保留位[28]DISFPUISSOPT0正常工作模式[27]DISCRITAXIRUW关闭关键 AXI写下读read-under-write机制0正常工作兼容 r0 版本内核1针对设备内存 / 强排序内存的 AXI 读操作、共享内存独占读操作必须等待 AXI 上所有未完成存储事务全部结束后才允许在 AXIM AR 通道发起。[26]DISDYNADD关闭 ADD、SUB 指令动态分配机制0正常工作部分 ADD、SUB 指令在 EX1 阶段完成运算1所有 ADD、SUB 指令均延迟至 EX2 阶段完成运算。备注M7是顺序执行双发射多级流水线。两条发射线在取指和译码之后如果资源不冲突会分别由两条发射通道执行(两条发射通道的执行能力存在差别通道1仅可以简单的运算操作。EX1和EX2分别是发射通道的执行过程。另外双发射是锁步同步推进的即每个时钟周期下所处的流水线阶段是一致的)[25:21]DISISSCH10正常工作1禁止对应类型指令在发射通道 1 派发。Bit [25]浮点 VFP 指令Bit [24]整数乘累加 MAC、乘法 MUL 指令Bit [23]目标为 PC 的加载指令Bit [22]间接跳转不含加载至 PC 场景Bit [21]直接跳转指令[20:16]DISDI0正常工作1当对应类型指令占用通道 0 时禁止任何指令双发射。Bit [20]浮点 VFP 指令Bit [19]整数乘累加 MAC、乘法 MUL 指令Bit [18]目标为 PC 的加载指令Bit [17]间接跳转不含加载至 PC 场景Bit [16]直接跳转指令备注硬件先检查该位然后在检查DISISSCH1全部通过后才执行双发射否则执行单发射[15]DISCRITAXIRUR关闭关键 AXI读下读Read-Under-Read机制0正常工作1若 AXI 存在尚未完成的读事务则不再发起针对强排序 / 设备内存的 AXI 读以及共享内存 LDREX 独占读。AXI 事务一旦发起将不可被打断。该位有助于缩短此类事务持续时长、优化最坏情况中断延迟开启后整体性能下降。[14]DISBTACALLOC0正常工作1分支目标地址缓存 BTAC 不再分配新条目但已有条目仍可更新。[13]DISBTACREAD0正常工作1不使用 BTAC 缓存仅能执行静态分支预测。[12]DISITMATBFLUSH关闭 ITM 与 DWT 的 ATB 冲刷机制1禁用 ITM、DWT ATB 冲刷忽略 AFVALID 信号强制拉高 AFREADY。注释该位硬件固定为 1属性为读恒 1、写忽略RAO/WI[11]DISRAMODE关闭回写 - 写分配Write-Back Write-Allocate存储区的动态读分配模式0正常工作模式1禁用动态读分配[10]FPEXCODIS禁用FPU异常输出0正常工作模式1关闭 FPU 异常输出备注该位只屏蔽FPU异常对外的硬件输出信号线不会关闭内核本身的异常处理这需要和数字集成同事确认集成时是否引出处理异常信号[9:3]-保留[2]DISFOLD0正常工作模式[1:0]-保留3.1.2 CPUID Base Register(CPUID)项目内容功能用途・处理器内核的 ID 编号・处理器内核的版本号・处理器内核的实现细节使用约束无使用约束。配置版本所有内核配置版本均支持该寄存器。属性说明见下表位域名称功能说明[31:24]IMPLEMENTER标识内核设计厂商0x41 Arm 公司[23:20]VARIANT标识处理器变体版本0x0 Revision 00x1 Revision 1[19:16]ARCHITECTURE固定为0xF[15:4]PARTNO标识器件型号0xC27 Cortex‑M7[3:0]REVISION标识补丁版本0x0 Patch00x1 Patch 10x2 Patch 23.1.3 Cache Level ID Register(CLIDR)项目内容功能用途・标识已实现的缓存层级。从架构层面而言指令侧与数据侧可配置不同数量的缓存层级。・记录一致性点point-of-coherency・记录统一缓存点point-of-unification使用约束只读寄存器且仅在特权模式下可以访问配置版本所有内核配置版本均支持该寄存器。属性说明见下表位域名称功能说明[31:30]—保留位[29:27]LoUU单核统一缓存层级Level of Unification Uniprocessor0b001存在任意一类缓存时统一缓存点位于 L2 缓存。0b000未实现指令缓存与数据缓存时统一缓存点位于 L1 层级。[26:24]LoC一致性层级Level of Coherency0b001存在任意一类缓存时一致性点位于 L2 缓存。0b000未实现指令缓存与数据缓存时一致性点位于 L1 层级。备注M7无L2缓存[23:3]—保留位[2:0]Ctype1L1 缓存类型0b000未实现指令缓存、数据缓存。0b001已实现指令缓存。0b010已实现数据缓存。0b011同时实现指令缓存与数据缓存。3.1.4 Cache Size ID Register(CCSIDR)项目内容功能用途提供由CSSELR 寄存器选中的指令缓存或数据缓存的容量与工作特性相关信息。从架构层面最多可支持八级缓存包含指令缓存、数据缓存或统一型缓存。本处理器仅包含一级L1指令缓存与数据缓存。使用约束只读寄存器且仅在特权模式下可以访问配置版本所有内核配置版本均支持该寄存器。属性说明见下表位域名称功能说明[31]WT标识是否支持写直通Write-Through1 支持写直通[30]WB标识是否支持写回Write-Back1 支持写回[29]RA标识是否支持读分配Read Allocate1 支持读分配[28]WA标识是否支持写分配Write Allocate1 支持写分配[27:13]NumSets标识缓存组数量计算公式实际组数 NumSets 1数值取决于缓存容量配置[12:3]Associativity标识缓存路数计算公式实际路数 Associativity 10x1 2 路组相联0x3 4 路数据缓存相联[2:0]LineSize标识每条缓存行包含多少个字word0x1 缓存行大小 32 字节备注计算公式为x即每条cacheline的大小(word)下表是CCSIDR编码实例说明。举例说明计算过程当SIZE4KBNumbers0x001FAssociativity0x3LineSize0x1。首先计算cacheline的大小根据上面提到的公式可以计算出x8word即cacheline容量为8*432B。然后每组有4路(Associativity1)共32组(Numbers1)。Cache总容量X_Linesize*(Associativity1)*(Numbers1)32*4*324096B4KB。3.1.5 Cache Size Selection Register(CSSELR)项目内容功能用途存放处理器用于选择待查询缓存的选择值。使用约束可读写仅特权模式下访问配置版本所有内核配置版本均支持该寄存器。属性说明见下表位域名称功能说明[31:4]—保留位[3:1]Level选择要查询的缓存层级。固定代表一级缓存L1。该字段读取恒为 0写入忽略RAZ/WI。[0]InD选择指令缓存或数据缓存0 数据缓存Data cache1 指令缓存Instruction cache3.1.6 Instruction and Data Tightly-Coupled Memory Control Register(CM7_ITCMCR/CM7_DTCMCR)项目内容功能用途控制访问请求被映射至 TCM 接口还是 AXIM 接口。使用约束仅特权模式下访问配置版本所有内核配置版本均支持该寄存器。属性说明见下表位域名称类型功能说明[31:7]——保留位[6:3]SZROTCM 容量。标识对应 TCM 的大小0b0000 未实现 TCM0b0011 4KB0b0100 8KB0b0101 16KB0b0110 32KB0b0111 64KB0b1000 128KB0b1001 256KB0b1010 512KB0b1011 1MB0b1100 2MB0b1101 4MB0b1110 8MB0b1111 16MB[2]RETENRW重试阶段使能。使能后处理器保证响应对应 TCM 接口上的重试输出信号重新执行发起 TCM 访问的指令。0禁用重试阶段1使能重试阶段复位值由 INITRETRYEN 引脚决定。重试功能可配合外部逻辑用于实现 TCM 的检错与纠错。[1]RMWRW读 - 修改 - 写RMW使能。该位置 1 时所有非 TCM RAM 完整位宽的 TCM 写访问都会采用 RMW 操作序列0禁用 RMW1使能 RMW复位值由 INITRMWEN 引脚决定。RMW 功能可配合外部逻辑用于实现 TCM 的检错与纠错。[0]ENRWTCM 使能。当 TCM 被禁用时所有原本指向 TCM 地址区间的访问全部转发至 AXIM 接口。0TCM 禁用1TCM 使能复位值由 INITTCMEN 引脚决定。3.1.7 AHBP Control Register(AHBPCR)项目内容功能用途控制访问请求路由至AHBP接口还是AXIM接口使用约束仅特权模式下访问配置版本所有内核配置版本均支持该寄存器。属性说明见下表位域名称类型功能说明[31:4]——保留位[3:1]SZROAHBP 地址空间大小0b0000MBAHBP 接口禁用0b00164MB0b010128MB0b011256MB0b100512MB其余编码值保留。寄存器复位值由 CFGAHBPSZ 配置引脚决定。[0]ENRWAHBP 接口使能0AHBP 禁用。接口关闭后原 AHBP 地址区间的所有访问请求均转发至 AXIM 接口。1AHBP 使能。复位值由 INITAHBPEN 配置引脚决定。3.1.8 L1 Cache Control Register(CACR)项目译文用途控制 L1 缓存 ECC 功能以及 L1 缓存一致性使用模式。使用约束仅允许在特权模式下访问。配置适配所有处理器配置版本均具备该寄存器。属性见下表位域名称类型功能说明[31:3]——保留位读取恒为 0、写入忽略RAZ/WI[2]FORCEWTRW使能数据缓存强制写直通模式0关闭强制写直通1开启强制写直通。所有可缓存内存区域一律按照写直通 (Write-Through)处理。若未集成数据缓存该位读取恒为 0、写入忽略。若集成数据缓存FORCEWT 上电复位值为 0。[1]ECCDISRW开启指令和数据缓存ECC功能0控制指令缓存与数据缓存的 ECC 功能1禁用指令缓存、数据缓存的 ECC 校验功能。[0]SIWTRW共享可缓存区域强制 WT数据缓存。用于启用受限缓存一致性工作模式0常规模式。共享可缓存地址按不可缓存对待软件配置的内部缓存属性被忽略。此为共享内存默认工作模式。对于这类地址数据缓存对软件等效透明无需软件执行缓存维护操作。1共享可缓存地址按写直通 (Write-Through)对待软件配置的内部缓存属性被忽略。所有写操作全局立即可见其他总线主设备的数据更新Cortex‑M7 内核软件仍需要执行对应的缓存维护操作才能读取到最新数据。适用于异构多核系统典型场景Cortex‑M7 挂接在多核处理器的加速器一致性端口ACP。未配置数据缓存时该位读取恒为 0、写入忽略RAZ/WI。备注该位的作用是修改 MPU 标记为 Normal / Shared可共享内存区域的数据缓存策略。当siwt0时标记为shareable的区域访问一律视作Non-cacheableCPU访问该区域时绕过Dcache走AXIM/AHBP总线。当siwt1时写操作执行WT操作读操作仍进行缓存操作。3.1.9 Auxiliary Bus Fault Status Register(ABFSR)项目译文用途保存异步总线故障的来源信息。在总线故障异常服务程序中软件读取 BFSR 寄存器若检测到存在异步故障则读取 ABFSR 寄存器确认受故障影响的接口。向 CM7_ABFSR 写入任意数值均可清除该寄存器标志位。关于 BFSR 更多信息请参阅《ARMv7-M 架构参考手册》。使用约束仅可在特权模式下访问。寄存器由系统复位信号nSYSRESET复位向其写入任意数据都会将寄存器清零。仅当BFSR.IMPRECISERR 1时本寄存器内的数据才具备有效定义。配置适配见下表位域名称功能说明[31:10]—保留位[9:8]AXIMTYPE标识 AXIM 接口上报的故障响应类型0b00OKAY正常访问完成无错误0b01EXOKAY独占访问成功响应0b10SLVERR从设备错误外设返回功能性故障0b11DECERR译码错误地址无对应从设备仅当 AXIM 位为 1 时此字段有效。[7:5]—保留位[4]EPPBEPPB 接口发生异步故障[3]AXIMAXIM 接口发生异步故障[2]AHBPAHBP 接口发生异步故障[1]DTCMDTCM 接口发生异步故障[0]ITCMITCM 接口发生异步故障3.1.10 Instruction Error bank Register 0-1(IEBR0-1)项目译文用途保存指令缓存查找过程中检测到的错误相关信息。使用约束仅允许在特权模式下访问。配置适配仅当实现了 ECC 可配置选项时该寄存器有效。属性见下表位域名称类型描述[31:30]—RW用户自定义。发生新缓存分配时以及上电复位时错误检测逻辑将此字段置为 0b00[29:18]—RW保留位[17]Type of error错误类型RW标识错误类型0可纠正错误1不可纠正错误[16]RAM bankRAM 存储体RW标识发生错误的 RAM 区域0标签 RAMTag RAM1数据 RAMData RAM备注双份寄存器通过该为指示TAG还是DATA[15:2]RAM locationRAM 位置信息RW标识指令缓存 RAM 内出错位置[14]路Way[13:4]组索引Index[3:2]缓存行内双字偏移[1]Locked锁定标志RW标识该缓存条目是否被锁定0条目未锁定硬件可用于缓存分配1条目由软件锁定硬件不允许将新内容分配至该条目上电复位默认值为 0[0]Valid有效标志RW标识本条记录是否有效0条目无效1条目有效上电复位默认值为 03.1.11 Data Error bank Register 0-1(DEBR0-1)项目译文用途保存数据缓存查找过程中检测到的错误相关信息。使用约束仅允许在特权模式下访问。配置适配仅当实现 ECC 选配功能时该寄存器可用。属性见下表位域名称类型描述[31:30]—RW用户自定义字段。在发生新缓存分配以及上电复位时错误检测逻辑将此字段置为 0b00[29:18]—RW保留位[17]Type of error错误类型RW标识错误类型0可纠正错误1不可纠正错误[16]RAM bankRAM 存储体RW标识出错所在 RAM 存储体0标签 RAMTag RAM1数据 RAMData RAM[15:2]RAM locationRAM 位置信息RW标识数据缓存 RAM 内出错位置[15:14]路Way[13:5]组索引Index[4:2]缓存行内字偏移[1]Locked锁定标志RW标识该缓存条目是否处于锁定状态0条目未锁定硬件可分配使用该条目1条目由软件锁定硬件不允许将新数据分配至该条目上电复位默认值为 0[0]Valid有效标志RW标识本条故障记录是否有效0条目无效1条目有效上电复位默认值为 03.1.12 AHB Slave Control Register(AHBSCR)项目译文用途控制内核软件访问与 AHB 从设备访问 TCM 时的优先级。使用约束仅允许在特权模式下访问。配置适配所有处理器配置版本均具备该寄存器。属性见下表位域名称类型功能说明[31:16]——保留位[15:11]INITCOUNTRW公平计数器初始值。用于降低由 AHBSCR.CTL 字段选定访问发起方的访问优先级。复位值为 0b01。・轮询调度模式下将 INITCOUNT 设置为 0b01同时 AHBSCR.CTL 设置为 0b00 或 0b01・注意INITCOUNT禁止配置为 0b00。若设为 0被降级的访问发起方在总线竞争时将始终获得优先权限可能引发活锁livelock。当 AHBSCR.CTL 0b11 时INITCOUNT 不生效。[10:2]TPRIRWAHBS 流量降级阈值执行优先级。优先级取值为 TPRI [7:0]编码格式与 NVIC 寄存器保持一致0b0xxxxxxx普通中断优先级0b11111111优先级 -1对应 HardFault 异常0b11111110优先级 -2对应 NMI 异常[1:0]CTLRWAHBS 优先级控制0b00AHBS 访问优先级被降级复位默认值0b01CPU 软件侧访问优先级被降级0b10当 CPU 当前执行优先级大于等于TPRI 配置阈值时使用 INITCOUNT 初始化公平计数器AHBS 访问优先级被降级当 CPU 执行优先级低于该阈值时公平计数器初始化为 1进入轮询仲裁模式。・阈值编码遵循 NVIC 规则数值越大逻辑优先级越低・处理器当前执行优先级遵循架构定义自动包含 PRIMASK、BASEPRI、FAULTMASK 特殊寄存器带来的屏蔽效果。0b11访问优先级由外部 AHBSPRI 信号控制。知识点占坑后面更新1、结合armv7手册补充其余寄存器的解释2、详细了解ARM M系列汇总的动态分支预测投机访问静态分支预测3、对于WBWA中的策略结合MPU属性划分详细了解Dcache处理机制4、对于缓存一致性的问题理解一下POC和POU机制以及常见的处理方式5、对于ECC机制SRAMFLASH以及tcm和cache的处理方式分别是什么6、AHBS从机的仲裁机制需研究一下