一 Cortex-M0到Cortex-M0+

ARM处理器家族

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位的。

  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架构所使用的的指令集的超集。

四 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)的可选特性,可以利用它实现指令跟踪。

Cortex-M0和Cortex-M0+简介相关推荐

  1. 基于Cortex M0+的STM32L0系列简介

    L0系列是意法半导体于2014年新推出的超低功耗的MCU,基于ARM Cortex M0+内核.目前有STM32L0x1,STM32L0x2,STM32L0x3三个子系列,默认主频为32M,RAM都是 ...

  2. Cortex‐M3和Cortex‐M0是否都能位带操作

    最近在进行stm32l011f4的编程,想到stm32有位带操作,便想试一试,但是事与愿违,先贴下位带操作代码 Cortex‐M0的位带操作代码 //IO输出方向设置 #define SDA_IN() ...

  3. cortex M与cortex A

    ARM公司目前主流处理器以Cortex来命名: 并分成 Cortex-A Cortex-R Cortex-M 三个系列. 三大系列分工明确 Cortex-A 系列--是开放式操作系统的高性能处理器.是 ...

  4. The Definitive Guide to ARM Cortex M3 and Cortex M4 Processors, 3rd Edition.pdf

    在网上找不到可以直接下载的直链,要不是要登录就是要付费,挺麻烦的,百度都搜不到什么好东西,谷歌一下发现了可以直接下载的连接如下 https://www.academia.edu/35524606/ 直 ...

  5. 模型web迁移延时太长,机器学习神器Cortex 能一键解决吗?

    2020-02-06 17:54 导语:各种改进,提高用户体验. 机器学习算法部署平台Cortex宣布推出 Cortex V0.13 . 据介绍,这次的Cortex v0.13支持了所有的主要机器学习 ...

  6. error: C:\projects\opencv-python\opencv\modules\imgproc\src\imgwarp.cpp:5594: error: (-215) (M0.type

    在做图像平移的时候产生了上述bug error: C:\projects\opencv-python\opencv\modules\imgproc\src\imgwarp.cpp:5594: erro ...

  7. Cortex:多租户、可横向扩展的Prometheus即服务

    作者:Luc Perkins Prometheus是用于监控和可观察性的标准开源解决方案之一. Prometheus于2012年起源于SoundCloud,迅速获得广泛采用,后来成为首批CNCF项目之 ...

  8. 重磅!兆易创新推出中国首款Cortex®-M7内核超高性能MCU GD32H737/757/759系列

    关注.星标公众号,精彩内容每日送达 来源:网络素材 中国北京(2023年5月11日)--业界领先的半导体器件供应商兆易创新GigaDevice (股票代码 603986) 今日宣布,正式推出中国首款基 ...

  9. ARM处理器的产品线——Cortex

    ARM公司在经典处理器ARM11以后的产品改用Cortex命名,并分成A.R和M三类,旨在为各种不同的市场提供服务.比如英特尔旗下处理器有酷睿,奔腾,赛扬.ARM在最初的处理器型号都用数字命名,最后一 ...

  10. 关于ARM内核经典系列ARM7/ARM9/ARM11和Cortex®-A/Cortex®-R/Cortex®-M的产品线简单介绍

    目前市场上的嵌入式单片机或者Soc大部分都是ARM的内核架构,相信大家对Cortex®-M3/Cortex®-M4,Cortex®-A53/Cortex®-A73等有所耳闻. ARM公司主要是设计处理 ...

最新文章

  1. 把运维和开发放一起就是DevOps?还差得远!
  2. 稀疏自编码器符号一览表
  3. SORT,DELETE ADJACEN DUPLICATES FROM保留有效数据
  4. centos7 VNC-Server-6.7.2
  5. EasyExcel简单使用
  6. php小数乘法,三 小数乘法精品|小学数学,北师大版,四年级下册,数学精品下载_21精品_21世纪教育网...
  7. 五分钟写出一个可以滑动条拖动的矩形脉冲合成的MatlabGUI程序
  8. Android——eclipse下运行android项目报错 Conversion to Dalvik format failed with error 1解决...
  9. iOS之UI--CAShapeLayer
  10. 计算机的论文初稿要交什么,论文初稿
  11. VBA 代码如何跟随Excel保存
  12. Nginx-免费SSL证书申请
  13. php5.6 oracle11,解决ORA-16055: FAL request rejected
  14. 【Cisco Packet Tracer--error】192.168.0.1overlaps with Internet
  15. 【论文阅读/翻译笔记】Deep Snake for Real-Time Instance Segmentation
  16. [导入]心若一动 泪就一行(转)
  17. kindeditor4.1.10图片上传配置及使用说明
  18. SQL 的日期函数 day() 、month()、year()
  19. 什么是哈希冲突?怎样解决哈希冲突?
  20. 如何撰写商业计划书?

热门文章

  1. 互联网人吐槽互撕系列漫画 要来啦~
  2. 磁珠特性以及选型注意事项
  3. WPF如何实现跨线程更新UI控件
  4. rms 公式 有效值_为什麼均方根值(RMS)比平均值表达好一些?
  5. 系统运维工程师都要会什么?
  6. 什么是机器翻译,主要有哪几种类型?
  7. 骁龙神经处理引擎(Snapdragon Neural Processing Engine)
  8. ⭐️UI自动化控制微信发送或转发图片消息✨
  9. 服务器违反了协议,IMAP协议违规:未知消息的EXPUNGE响应?
  10. DOE实验设计操作手册