Cortex-M0和Cortex-M0+简介

一 Cortex-M0到Cortex-M0+

ARM处理器家族
 ARM处理器家族
RAM处理器演变

Cortex-M0处理器于2009年发布,是一款具有开创性的产品,因其实第一个将32位处理器在同8位和16位处理器差不多大小的硅片实现的,在保持可用性的同时还具有极佳的能耗效率,并且对于32位处理器而言,它的性能也是可以接受的。

尽管Cortex-M0处理器比Cortex-M3(于2003年发布)处理器小的多,它还是保留了Cortex-M3处理器的许多特性:

  • 利用内置名为NVIC的中断控制器实现灵活的中断管理;
  • OS支持特性
  • 高代码密度
  • 休眠模式等低功耗特性
  • 集成调试支持
  • 易于使用,几乎可用全部可以使用C语言编程

Cortex-M0和Cortex-M3都使用的是3级流水线结构,Cortex-M0+使用的是2级流水线结构(取指 + 预解析,解析 + 执行),这样就降低了处理器内振荡器的数量,动态功耗也随之下降。

M0和M0+处理器的应用:

  • 一般的数据处理和I/O控制任务
  • 超低功耗应用
  • 8位/16位微控制器的跟新/替代
  • 低成本ASIC、ASSP

芯片到底是什么?
芯片的物理层面是由半导体材料构成的多个晶体管,这些晶体管会构成过个逻辑门电路(与门、或门、非门、或非门等更加复杂的门电路)。芯片设计人员首先得到是Verilog源代码文件,并且有多个参数可以选择,芯片设计人员可以去掉项目中用不到的一些特性,以节省功耗并减少硅片面积。处理器同系统中的其他部分组合在一起,并被转换为由逻辑门组成的设计,然后被芯片设计工具转换成晶体管。

M0最低配只有12000个逻辑门,M3最少也要40000个逻辑门,因此M3的硅片一般要比M0大的多。

二 指令集

  1. 指令集是什么

所有的处理器在执行所需操作时,都需要执行相应的指令序列,每条指令都定义了一个简单操作,例如简单的ALU运算,对存储器系统的数据访问以及程序的跳转操作等。

对于处理器而言,指令是以二进制代码的形式出现的,并且需要由内部硬件(指令解析器)进行解析,然后解析后的指令信息才会被转到执行阶段。

Cortex-M处理器支持的指令集名为Thumb,而M0和M0+处理器则只支持其中的一个子集(56条指令),这些指令多数为16位宽,只有6个指令是32位的。

TODO: Cortex-M指令集

  1. ARM和Thumb指令集

早期的ARM处理器(ARM7TDMI之前)支持名为ARM的32位指令集,该指令集功能强大,并可以提供良好的性能。但是,和8位、16位处理器相比,它通常需要更多的程序存储器。无论过去还是现在,这都是一个需要考虑的问题,因为存储器相对比较昂贵且功耗高。

1995年,ARM发布了ARM7TDMI®处理器,增加了一个名为Thumb的16位指令集,并且利用一种状态切换机制确定处理器应该使用的指令解析逻辑。Thumb指令集包含ARM指令的一个子集,大多数函数都可以利用Thumb自身完成,但中断进入流程和启动代码必须处于ARM状态。但是,多数处理任务都是可以由Thumb指令执行,且中断处理也可以将处理器切换至Thumb状态,因此,和其他32位RISC架构相比ARM7TDMI具有绝佳的代码密度。

2003年,ARM引入了Thumb-2技术,其中包含多个32位Thumb指令以及之前的16位Thumb指令,这些新的32位Thumb指令可以执行以前只能由ARM指令集实现的多数操作,因此,利用Thumb-2编译的程序一般是ARM代码的74%,同时其性能相近。

三 ARMv6-M架构

Cortex-M0和Cortex-M0+处理器都是基于ARMv6-M架构,对于ARM处理器,架构指的是以下两个方面:

  • 架构,ISA(指令集架构)、编程模型(对于软件可见)和调试方式(调试器可见)。ARMv6-M是ARM的架构之一。
  • 微架构,接口信号、指令执行时序和流水线阶段等设计相关的细节,微控制器架构和处理器设计有关,例如Cortex-M0处理器具有三级流水线微架构。

为了满足不同处理器的需要,ARM设计了多个架构,例如,Cortex-M3和Cortex-M4处理器都基于ARMv7-M架构。一个ISA(指令集)可能具有多个微架构,例如不同数量的流水线阶段和不同类型的总线接口协议等。

M0和M0+具有完全相同的指令集和相似的编程模型,不同的是M0+可以选择是否支持非特权执行等级和MPU。M0只有特权模式,并且不支持MPU。

M3和M4都是基于ARMv7-M架构,它们的Thumb-2指令集是ARMv6-M架构所使用的的指令集的超集。

TODO: Cortex-M0处理器简单系统

四 Cortex-M0和Cortex-M0+处理器的关键特性

  1. 处理器流水线
  • Corte-M0处理器具有3级流水线(取指、解析、执行)
  • Cortex-M0+处理器具有2级流水线(取指 + 预解析,解析 + 执行)
  1. 指令集
  • 指令集基于Thumb指令集架构(ISA),但是只使用了Thumb ISA的一个子集(56条指令),多数指令是16位,只有少数一些事32位。
  • 一般来说,尽管指令具有不同大小,Cortex-M处理器可被归为精简指令集架构。
  • 支持可选的单周期32位 * 32位乘法或用于小硅片面积设计的更小的多周期乘法
  1. 存储器寻址
  • 32位寻址,支持最多4GB的存储空间。
  • 系统总线接口基于名为AHB-Lite的片上总线协议,支持8位、16位、32位的数据传输。
  • AHB-Lite协议是流水线结构,支持高运行频率。外设可以通过AHB到APB总线桥连至基于APB协议(高级外设总线)的简单总线。
  1. 中断处理
  • 处理器内部有一个名为嵌套向量中断控制器(NVIC)的中断控制器,其具有控制中断优先级和掩码功能,并且支持各外设产生最多32个中断请求(和芯片厂商有关)、一个不可屏蔽中断(NMI)输入以及多个系统异常。
  • 每个中断都可被设置为4个可编程优先级中的1个,NMI的优先级是固定的。
  1. 操作系统(OS)支持
  • 处理器中的两个系统异常(SVCall 和 PendSV)用于操作系统
  • 一个名为SYSTick(系统节拍定时器)的24位硬件定时器用于OS周期定时。
  • Cortex-M0+处理器支持特权和非特权(芯片设计人员可选),OS可以在非特权等级下执行某些应用任务,并可以给这些任务设置存储器访问权限。
  • Cortex-M0+处理器中存在一个可选的存储器保护单元(MPU),OS可以借此在运行期间定义应用任务的存储器访问权限。
  1. 低功耗支持
  • 架构定义了普通休眠和深度休眠两种休眠模式,这些休眠模式的实际表现是和设备相关的(取决于你所使用的芯片)。芯片设计人员还可以添加节省功耗的控制寄存器以增加休眠模式的数量,这样可以定义芯片中每个部分的休眠行为。
  • 可以使用WFI(等待中断)或WFE(等待事件)进入休眠模式,也可以利用一种名为退出休眠的特性让处理器自动进入休眠。
  • 芯片设计人员可以基于休眠模式特性、利用其他的硬件等级进行进一步降低功耗,例如唤醒中断控制器等(WIC).
  1. 调试
  • 调试系统基于ARM CoreSight调试架构,支持简单的单处理器设计到复杂的多处理器设计。
  • 调试接口可以基于JTAG协议(4个或5个引脚)或串行线调试协议(2个引脚),软件开发人员可以利用调试接口访问处理器的调试特性。
  • 支持最多4个硬件断点、2个数据监视点以及用BKPT(断点)指令实现的不限数量的软件断点。
  • 支持通过调试连接程序计数器(PC)采样得到的基本程序执行概况。
  • Cortex-M0+处理器中有一个名为微跟踪缓冲(MTB)的可选特性,可以利用它实现指令跟踪。
  • 23
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值