Cortex-M3与M4权威指南

处理器类型

所有的ARM Cortex-M 处理器是32位的精简指令集处理器。它们有:

  • 32位寄存器
  • 32位内部数据路径
  • 32位总线接口

除了32位数据,Cortex-M处理器也可以有效地处理器8位和16位数据以及支持许多涉及64位数据的操作(例如,乘法、累加)。

Cortex-M3和Cortex-M4处理器都有一个三阶段的流水线设计(指令获取、解码和执行),都有一个哈佛总线架构,允许同时获取指令和数据访问。

ARM Cortex-M处理器的内存系统使用32位寻址,这允许最大4GB的地址空间。内存映射是统一的,这意味着虽然可以有多个总线接口,但只有一个4GB的内存空间。内存空间由处理器内的程序代码、数据、外设和一些调试支持组件使用。

就像任何其它ARM处理器一样,Cortex-M处理器基于负载存储架构。这意味着需要从内存加载数据,处理数据,然后使用许多单独的指令将数据写回内存。

例如,要增加存储在SRAM中的数据值,处理器需要使用一条指令从SRAM读取数据并将其放入处理器内部的寄存器中,第二条指令增加寄存器的值,然后第三条指令将该值写回内存。处理器内部寄存器的详细信息通常被称为程序员模型。

处理器体系架构

处理器只是微控制器芯片的一部分。
存储系统、外设和各种接口功能由微控制器供应商开发。
在ARM处理器中,架构可以分为两个区域:

  • 体系结构:指令集体系结构(ISA),程序员模型(软件看到的)和调试方法(调试器看到的)。
  • 微体系结构:特定于实现的细节,如接口信号、指令执行时间、管道阶段。微体系结构是特定于处理器设计的。

指令集

Cortex-M处理器使用的指令集被称为Thumb(这包括16位的Thumb指令和更新的32位指令)。
M3和M4处理器集成了Thumb-2技术,允许16位和32位指令,以实现高代码密度和高效率。

经典的ARM处理器,例如ARM7TDMI,处理器有两种运行状态:一个32位的ARM状态和一个16位的Thumb状态。
在ARM状态下,指令是32位的,内核可以以非常高的性能执行所有支持的指令。
在Thumb状态下,指令是16位的,提供了很好的代码密度,但Thumb指令不具备ARM指令的所有功能,可能需要更多的指令来完成某些类型的操作。

为了获得两者的优势,许多经典ARM处理器的应用程序混合了ARM和Thumb代码。
然而,混合代码安排并不总是理想地工作。存在开销(在执行时间和指令数)。
Cortex-M3与M4权威指南_第1张图片
在状态之间切换,以及两种状态的分离会增加软件编译过程的复杂性,并且使没有经验的开发人员更难优化软件。

随着Thumb-2技术的引入,Thumb指令集已经扩展到支持16位和32位指令编码。
现在,无需两种不同的操作状态之间切换,就可以处理所有的要求。
实际上,Cortex-M处理器根本不支持32位ARM指令。甚至中断处理也完全在Thumb状态下处理,而在经典ARM处理器中,中断处理程序进入ARM状态。
采用Thumb-2技术,Cortex-M处理器与经典ARM处理器相比具有许多优势,例如:

  • 没有状态切换开销,节省了执行时间和指令空间
  • 不需要在源文件中指定ARM状态或Thumb状态,使软件开发更容易
  • 这样更容易同时获得最佳的代码密度、效率和性能
  • 使用Thumb-2技术,与ARM7TDMI等经典处理器相比,Thumb指令集得到了很大的扩展。请注意,尽管所有的Cortex-M处理器都支持Thumb-2技术,但它们实现了Thumb ISA的不同子集。

框图

从高层角度来看,Cortex-M3和M4非常相似。
尽管在内部数据路径设计上存在显著差异,但处理器的某些部分(如指令预取缓冲区,部分指令解码和执行阶段)以及NVIC也彼此相似。
此外,“核心”层之外的组件几乎是相同的。

Cortex-M3和Cortex-M4处理器包含处理器的核心、嵌套矢量中断控制器(NVIC)、SysTick计时器和可选的浮点单元(用于Cortex-M4)。除了这些,处理器还包含:一些内部总线系统,一个可行的内存保护单元(MPU)和一组支持软件调试操作的组件。

Cortex-M3和Cortex-M4处理器是高度可配置的。例如,调试功能是可选的,如果产品中不需要调试支持,则允许片上系统设计人员删除调试组件。这使得设计的硅面积大大减少。在某些情况下,硅设计人员还可以选择减少硬件指令断点和数据观察点比较器的数量,以减少栅极计数。许多系统特性,如中断输入的数量、支持的中断优先级的数量和MPU也是可配置的。

内存系统

Cortex-M3和M4处理器本身不包括内存(即,它们没有程序内存,SRAM或缓存)。
相反,它们带有通用的片上总线接口,因此微控制器供应商可以在其设计中添加自己的存储系统。
通常,微控制器供应商需要向内存系统添加以下项目:

  • 程序存储器,通常是闪存。
  • 数据存储器,通常是SRAM
  • 外设

这样,不同的微控制器产品可以有不同的内存配置,不同的内存大小和类型,以及不同的外设。

Cortex-M处理器的总线接口是32位的,基于高级微控制器总线体系结构(AMBA)标准。
AMBA包含几个总线协议规范的集合。
AMBA规范可以从ARM网站获得。

Cortex-M3和M4处理器使用的主要总线接口是AHB Lite(高级高性能总线),用于程序内存和系统总线接口。
AHB Lite协议是一种流水线总线协议,允许高工作频率和低硬件面积成本。
另一种使用的总线协议是高级外围总线(APB)接口。

中断和异常支持

Cortex-M3/M4处理器包括一个嵌套向量中断控制器。它是可编程的,它的寄存器是内存映射的。NVIC的地址位置是固定的,程序员的NVIC模型在所有Cortex-M处理器中是一致的。

除了来自外设和其他外部输入的中断外,NVIC还支持许多系统异常,包括处理器内的不可屏蔽中断(NMI)和其他异常源。

微控制器供应商可以决定NVIC应该提供多少中断信号,以及NVIC设计中支持多少可编程中断优先级。

Cortex-M4特有的功能

Cortex-M4处理器在很多方面与Cortex-M3非常相似。然而,它有许多Cortex-M3没有的功能。这包括DSP扩展和可选的单精度浮点单元。

你可能感兴趣的:(stm32,stm32,嵌入式硬件,单片机,学习,系统架构)