【ARM Cortex-M3指南】5:Cortex-M3设计综述

五、Cortex-M3设计综述

本章主要面向片上系统(SoC)设计人员,他们可能会有兴趣将Cortex-M3用于他们的工程中。普通的微控制器用户则无须了解这些细节,不过,若对Cortex-M3处理器内部操作感兴趣,本章可以提供处理器设计的概况。

5.1 流水线

Cortex-M3具有三级流水线,三个阶段分别为取指、指令译码和指令执行(见图6.1)。

image.png

由于访问存储器时总线接口的流水线行为,有些人可能会认为应该为四个阶段。不过,这个阶段是处理器外部的,因此处理器本身还是只有三个阶段。

当运行的程序多是16位指令时,你会发现处理器可能不会在每个周期都取指令。这是因为处理器每次最多取出2个指令(32位),那么当一个指令取出后,下一条已经在处理器里了。在这种情况下,处理器总线接口可能会下次才取指,或者若缓冲满,总线接口可能会处于空闲状态。有些指令的执行需要花费多个周期,在这种情况下,流水线就会暂停。

在执行跳转指令时,流水线会被清空。处理器必须从跳转目的取出指令以填充流水线。不过,Cortex-M3处理器支持v7-M架构的多个指令,因此,有些小范围的跳转可能会被条件执行代码代替。

由于处理器的流水线特性,要保证程序同Thumb代码兼容,在指令执行期间读取程序计数器时,读出值需要为指令的地址加4。如果利用程序计数器生成存储器访问的地址,就会使用指令地址加4的字对齐值,偏移为常量,而不管16位Thumb指令和32位Thumb2指令如何组合。这样也就保证了Thumb和Thumb2的一致性。

在处理器内核的指令预取单元中,也存在一个指令预取缓冲(见图6.2),其可以让指令在使用前排队等候。在指令序列中包含的32位Thumb2指令若有非字对齐的,该缓冲可以避免流水线暂停。不过,该缓冲不会增加额外的流水线阶段,因此不会增加跳转开销。

image.png

5.2 详细框图

Cortex-M3处理器内不仅有处理器内核,还包含多个用于系统管理的部件以及调制支持部件(见图6.3)。这些部件使用高级高性能总线(AHB)以及高级外设总线(AHB)相互连接,AHB和APB为高级微控制器总线架构(见《Advanced Microcontroller Bus Architecture,AMBA》,参考文献[4])标准的一部分。

应该注意的是,MPU、WIC和ETM为可选模块,它们可以在实现阶段包含在微控制器中。表6.1中列出了多个新部件。

image.png
image.png

image.png

Cortex-M3处

Cortex-M3技术参考手册 第 1 章 概述.................................. 1.1 关于处理器..................... 1.2 处理器的组件................. 1.2.1 Cortex-M3 的层次 1.2.2 处理器内核.......... 1.2.3 NVIC..................... 1.2.4 总线矩阵.............. 1.2.5 FPB........................ 1.2.6 DWT...................... 1.2.7 ITM........................ 1.2.8 MPU...................... 1.2.9 ETM...................... 1.2.10 TPIU.................... 1.2.11 SW/JTAG-DP...... 1.3 可配置的选项................. 1.3.1 中断...................... 1.3.2 MPU...................... 1.3.3 ETM.............................. 1.4 指令集汇总............................. 第 2 章 编程模型(programmer's mo 2.1 关于编程模型......................... 2.1.1 工作模式...................... 2.1.2 工作状态...................... 2.2 特权访问用户访问............. 2.2.1 主堆栈进程堆栈...... 2.3 寄存器 2.3.1 通用寄存器.................. 2.3.2 特殊用途的程序状态寄 2.4 数据类型................................. 2.5 存储器格式............................. 2.6 指令集..................................... 第 3 章 系统控制.................................. 3.1 处理器寄存器汇总................. 3.1.1 嵌套向量中断控制器的寄存器............. 3.1.2 内核调试寄存器..................................... 3.1.3 系统调试寄存器..................................... 3.1.4 调试接口的端口寄存器......................... 3.1.5 存储器保护单元的寄存器..................... 3.1.6 跟踪端口接口单元的寄存器................. 3.1.7 嵌入式跟踪宏单元的寄存器................. 第 4 章 存储器映射.............................................................. 4.1 关于存储器映射..................................................... 4.2 Bit-banding............................................................... 4.2.1 直接访问别名区.......................................... 4.2.2 直接访问 bit-band 区................................... 4.3 ROM 存储器表........................................................ 第 5 章 异常.......................................................................... 5.1 关于异常模型......................................................... 5.2 异常类型................................................................. 5.3 异常优先级............................................................. 5.3.1 优先级.......................................................... 5.3.2 优先级分组.................................................. 5.4 特权堆栈............................................................. 5.4.1 堆栈.............................................................. 5.4.2 特权.............................................................. 5.5 占先......................................................................... 5.5.1 堆栈.............................................................. 5.6 末尾连锁(Tail-chaining).................................... 5.7 迟来......................................................................... 5.8 退出......................................................................... 第 7 章 电源管理........................................... 7.1 电源管理概述.................................. 7.2 系统电源管理.................................. 7.2.1 SLEEPING............................. 7.2.2 SLEEPDEEP.......................... 第 8 章 嵌套向量中断控制器....................... 8.1 NVIC 概述........................................ 8.2 NVIC 编程器模型............................ 8.2.1 NVIC寄存器映射................. 8.2.2 NVIC寄存器描述................. 8.3 电平中断与脉冲中断...................... 第 9 章 存储器保护单元............................... 9.1 MPU概述......................................... 9.2 MPU编程器模型............................. 9.2.1 MPU寄存器纵览.................. 9.2.2 描述 MPU寄存器................ 9.2.3 使用重叠寄存器访问 MPU. 9.2.4 子区域................................... 9.3 MPU访问权限.................................
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

USOPP冒险记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值