精品转载:ARM Cortex-M处理器
原文链接 - http://www.21ic.com/news/mcu/201704/715033.htm
简介
今天, ARM Cortex-M 处理器家族有8款处理器成员。除此之外,ARM的产品系列还有很多其他的处理器成员。对很多初学者,甚至某些芯片设计经验丰富但是不熟悉ARM系列处理器的设计者来说,也是很容易混淆这些产品的。不同的ARM 处理器有不同的指令集,系统功能和性能。本文会深入展现Cortex-M系列处理器之间的关键区别,以及它们和ARM其他系列处理器的不同。
ARM处理器家族
多年来, ARM已经研发了相当多的不同的处理器产品。 如下图中(图1): ARM 处理器产品分为经典ARM处理器系列和最新的Cortex处理器系列。并且根据应用范围的不同,ARM处理器可以分类成3个系列。
- Application Processors(应用处理器) – 面向移动计算,智能手机,服务器等市场的的高端处理器。这类处理器运行在很高的时钟频率(超过1GHz),支持像Linux,Android,MS Windows和移动操作系统等完整操作系统需要的内存管理单元(MMU)。 如果规划开发的产品需要运行上述其中的一个操作系统,你需要选择ARM 应用处理器.
- Real-time Processors (实时处理器) – 面向实时应用的高性能处理器系列,例如硬盘控制器,汽车传动系统和无线通讯的基带控制。多数实时处理器不支持MMU,不过通常具有MPU、Cache和其他针对工业应用设计的存储器功能。实时处理器运行在比较高的时钟频率(例如200MHz 到 >1GHz ),响应延迟非常低。虽然实时处理器不能运行完整版本的Linux和Windows操作系统, 但是支持大量的实时操作系统(RTOS)。
- Microcontroller Processors(微控制器处理器) – 微控制器处理器通常设计成面积很小和能效比很高。通常这些处理器的流水线很短,最高时钟频率很低(虽然市场上有此类的处理器可以运行在200Mhz之上)。 并且,新的Cortex-M处理器家族设计的非常容易使用。因此,ARM 微控制器处理器在单片机和深度嵌入式系统市场非常成功和受欢迎。
图 1: 处理器家族
表1总结了三个处理器系列的主要特征。
X | Application Processors | Real-time Processors | Microcontroller processors |
---|---|---|---|
设计特点 | 高时钟频率,长流水线,高性能,对媒体处理支持(NEON指令扩展) | 高时钟频率,较长的流水线,高确定性(中断延迟低) | 通常较短的流水线,较低功耗 |
系统性能 | MMU,cache, TrusZone | MPU,cache,TCM(紧耦合内存) | MPU,NVIC(嵌套向量中断控制器),WIC(唤醒中断控制器),TrustZone |
目标市场 | 移动计算,智能手机,高能效服务器,高端微处理器 | 工业微控制器,汽车电子,硬盘控制器,基带 | 微控制器,深度嵌入系统(例如Sensor、MEMS、IoT、混合信号IC) |
Cortex-M 处理器家族
Cortex-M处理器家族更多的集中在低性能端,但是这些处理器相比于许多微控制器使用的传统处理器性能仍然很强大。例如,Cortex-M4和Cortex-M7处理器应用在许多高性能的微控制器产品中,最大的时钟频率可以达到400Mhz。
当然,性能不是选择处理器的唯一指标。在许多应用中,低功耗和成本是关键的选择指标。因此,Cortex-M处理器家族包含各种产品来满足不同的需求:
表 2: Cortex-M 处理器家族
Processor | Description |
---|---|
Cortex-M0 | 面向低成本,超低功耗的微控制器和深度嵌入应用的非常小的处理器(最小12k门电路) |
Cortex-M0+ | 针对小型嵌入式系统的最高效能的处理器,与Cortex-M0处理器接近的尺寸大小和编程模式,但是具有扩展功能,如单周期I/O接口和向量表重定位功能 |
Cortex-M1 | 针对FPGA设计优化的小处理器,利用FPGA上的存储器块实现了紧耦合内存TCM,和Cortex-M0有相同的指令集 |
Cortex-M3 | 针对低功耗微控制器设计的处理器,面积小但是性能强劲,支持可以快速处理复杂任务的丰富指令集。具有硬件除法器和乘加指令(MAC)。并且,M3支持全面的调试和跟踪功能,使软件开发者可以快速的开发他们的应用 |
Cortex-M4 | 不但具备Cortex-M3的所有功能,并且扩展了面向数字信号处理(DSP)的指令集,比如单指令多数据指令(SMID)和更快的单周期MAC操作。此外,它还有一个可选的支持IEEE754浮点标准的单精度浮点运算单元 |
Cortex-M7 | 针对高端微控制器和数据处理密集的应用开发的微控制器。具备Cortex-M4支持的所有指令功能,扩展支持双精度浮点运算,并且具备扩展的存储器功能,例如cache和紧耦合存储器TCM |
Cortex-M23 | 面向超低功耗,低成本应用设计的小尺寸处理器,和Cortex-M0相似,但支持各种增强的指令集和系统层面的功能特性。M23还支持TrustZone安全扩展。 |
Cortex-M33 | 主流的处理器设计,与之前的Cortex-M3和Cortex-M4处理器类似,但系统设计更灵活,能耗比更高效,性能更高。M33还支持TrustZone安全扩展。 |
不同于老的经典ARM处理器(例如,ARM7TDMI, ARM9), Cortex-M处理器有一个非常不同的架构。例如:
- 仅支持ARM Thumb®指令,已扩展到同时支持16位和32位指令Thumb-2版本
- 内置的嵌套向量中断控制负责中断处理,自动处理中断优先级,中断屏蔽,中断嵌套和系统异常处理。
- 中断处理函数可以使用标准的C语言编程,嵌套中断处理机制避免了使用软件判断哪一个中断需要响应处理。同时,中断响应速度是确定性的,低延迟的
- 向量表从跳转指令变为中断和系统异常处理函数的起始地址。
- 寄存器组和某些编程模式也做了改变。
这些变化意味着许多为经典ARM处理器编写的汇编代码需要修改,老的项目需要修改和重新编译才能迁移到Cortex-M的产品上。软件移植具体的细节记录在ARM文档:ARM Cortex-M3 Processor Software Development for ARM7TDMI Processor Programmers
Cortex-M系列处理器的共同特性
Cortex-M0, M0+, M3, M4 and M7之间有很多的相似之处,例如:
- 基本编程模型 (章节 3.1)
- 嵌套向量中断控制器(NVIC)的中断响应管理
- 架构设计的休眠模式:睡眠模式和深度睡眠模式 (章节 4.1)
- 操作系统支持特性 (章节 3.3)
- 调试功能 (章节 6)
- 易用性
例如,嵌套向量中断控制器是内置的中断控制器:
传递值参数