datasheet

Cortex - M3与Cortex - M4对比

2013-10-11来源: eefocus关键字:Cortex-M3  Cortex-M4  串行线

本文主要从M3和M4的MPU、DSP能力、debug调试和电源管理4个方面说明两者的区别。 

1.内存保护单元MPU 

与Cortex - M3的相同,MPU是一个Cortex - M4中用于内存保护的可选组件。处理器支持标准ARMv7内存保护系统结构模型。您可以使用在MPU执行 特权/访问 规则,或者独立的进程。这个MPU提供全面支持:

保护区

重叠保护区域,提升区域优先级(7 =最高优先级,0 =最低优先级)

访问权限

将存储器属性输出至系统

 

.DSP能力

 

下图展示了处理器运行在相同的速度下Cortex - M3和Cortex - M4在数字信号处理能力方面的相对性能比较。

在下面的数字,Y轴代表执行给出的计算用的相对的周期数。 因此,循环数越小,性能越好。以Cortex - M3作为参考,Cortex - M4的性能计算,性能比大概为其周期计数的倒数。举例说明,PID功能,Cortex - M4的周期数是与Cortex - M3的约0.7倍,因此相对性能是1/0.7,即1.4倍。

 

Cortex - M系列16位循环计数功能

 

Cortex - M系列32位循环计数功能

 

 

这很清楚的表明,Cortex - M4在数字信号处理方面对比Cortex - M3的16位或32位操作有着很大的优势。

Cortex-M4执行的所有的DSP指令集都可以在一个周期完成,Cortex - M3需要多个指令和多个周期才能完成的等效功能。即使是PID算法——通用DSP运算中最耗费资源的工作,Cortex - M4也能提供了一个1.4倍的性能得改善 。另一个例子,MP3解码在Cortex-M3需要20-25Mhz,而在Cortex-M4只需要10-12MHz。  [page]

 

      1). 32位乘法累加(MAC)

32位乘法累加(MAC)包括新的指令集和针对Cortex - M4硬件执行单元的优化它是能够在单周期内完成一个 32 × 32 + 64 - > 64 的操作 或 两个16 × 16 的操作。如下表列出了这个单元的计算能力。

 

 

      2). SIMD

Cortex - M4支持SIMD指令集,这在上一代的Cortex - M系列是不可用的。上述表中的指令,有的属于SIMD指令。与硬件乘法器一起工作(MAC),使所有这些指令都能在单个周期内执行。受益于SIMD指令的支持,Cortex - M4处理器是能在单周期完成高达32 × 32 + 64 - >64的运算,为其他任务释放处理器的带宽, 而不是被乘法和加法消耗运算资源。考虑以下复杂的算术运算,其中两个16 × 16乘法加上一个32位加法,被编译成由一个单一指令执行:SUM = SUM +(A* C)+(B *D)

 

 

 

 

      3).FPU 

FPU是Cortex - M4浮点运算的可选单元。因此它是一个专用于浮点任务的单元。这个单元通过硬件提升性能,能处理单精度浮点运算,并与IEEE 754标准 兼容。这完成了ARMv7 - M架构单精度变量的浮点扩展。FPU扩展了寄存器的程序模型与包含32个单精度寄存器的寄存器文件。这些可以被看作是:

  • 16个64位双字寄存器,D0 - D15
  • 32个32位单字寄存器,S0 - S31 该FPU提供了三种模式运作,以适应各种应用
  • 全兼容模式(在全兼容模式,FPU处理所有的操作都遵循IEEE754的硬件标准)
  • Flush-to-zero 冲洗到零模式(设置FZ位浮点状态和控制寄存器FPSCR [24]到flush-to-zero 模式。在此模式下,FPU 在运算中将所有不正常的输入操作数的算术CDP操作当做0.除了当从零操作数的结果是合适的情况。VABS,VNEG,VMOV 不会被当做算术CDP的运算,而且不受flush-to-zero 模式影响。结果是微小的,就像在IEEE 754 标准的描述的那样,在目标精度增加的幅度小于四舍五入后最低正常值,被零取代。IDC的标志位,FPSCR [7],表示当输入Flush时变化。UFC标志位,FPSCR [3],表示当Flush结束时变化)
  • 默认的NaN模式(DN位的设置,FPSCR [25],会进入NaN的默认模式。在这种模式下,如对任何算术数据处理操作的结果,涉及一个输入NaN,或产生一个NaN结果,会返回默认的NaN。仅当VABS,VNEG,VMOV运算时,分数位增加保持。所有其他的CDP运算会忽略所有输入NaN的小数位的信息)

下表显示的是FPU指令集

 

3.debug调试

与Cortex - M3的相同, Cortex - M4的设备是通过标准JTAG或串行线调试连接器调试。要连接到主机的接口,一个简单,标准化外部连接器是必要的。[page]

 

4. 电源

    1).电源管理

 

       2).功耗比较

从图所示,很明显在功率效率方面Cortex - M4的性能大大优于表Cortex - M3。 

关键字:Cortex-M3  Cortex-M4  串行线

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/2013/1011/article_13862.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:TI Sitara AM335x ARM Cortex-A8 处理器支持Arduino
下一篇:单片机温度控制系统中的工频干扰及抑制措施

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

Cortex-M3寄存器组

1、通用目的寄存器R0~R7         R0-R7 也被称为低组寄存器。所有指令都能访问它们。它们的字长全是 32 位,复位后的初始值是不可预料的。2、通用目的寄存器 R8-R12         R8-R12 也被称为高组寄存器。这是因为只有很少的 16 位 Thumb 指令能访问它们, 32 位的thumb-2 指令则不受限制。它们也是 32 位字长,且复位后的初始值是不可预料的。3、特殊功能寄存器程序状态寄存器:APSR, IPSR, EPSR  ---- 通过MRS/MSR 指令,这3 个PSRs 即可以单独访
发表于 2019-03-08
Cortex-M3寄存器组

Cortex-M3操作模式和特权级别

Cortex-M3支持两种操作模式,还支持两种特权级别;两种模式为handler模式和线程(thread)模式,这两种模式是为了区别正在执行代码的类型;handler模式为异常处理例程的代码;线程模式为普通应用程序的代码;两种特权级别包括特权级和用户级,两种特权级别是对存储器访问提供的一种保护机制;在特权级下,程序可以访问所有范围的存储器(如果有MPU,还要在MPU的禁地之外),并且能够执行所有指令;在用户级下,不能访问系统控制空间(SCS,包含配置寄存器及调试组件的寄存器),且禁止使用MSR访问特殊功能寄存器(APSR除外),如果访问,则产生fault;在线程模式,可以是特权级,也可以是用户级;handler模式总是特权级
发表于 2019-03-08
Cortex-M3操作模式和特权级别

Cortex-M3栈内存操作

访问堆栈用堆栈指针,并且PUSH指令和POP指令默认使用SP。堆栈的PUSH与POP堆栈是一种存储器的使用模型。它由一块连续的内存和一个栈顶指针组成,用于实现”后进先出“的缓冲区。其最典型的应用,就是在数据处理前先保存寄存器的值,再在处理任务完成后从中恢复先前保护的这些值。  注:寄存器的PUSH和POP操作永远都是4字节对齐的。原因是:堆栈指针的最低两位永远是0。栈内存操作  在Cortex-M3中,除了可以使用PUSH和POP指令来处理堆栈外,内核还会在异常处理的始末自动PUSH和POP操作。  堆栈的基本操作  堆栈的功能就是把寄存器的数据
发表于 2019-03-08
Cortex-M3栈内存操作

Cortex-M3存储器系统

来访问。在此区的下部,有一个1MB的位带区,该位带区还有一个对应的32MB的“位带别名区”,容纳了8M个“位变量”。位带区对应的是最低的1MB地址范围,而位带别名区里面的每个字对应位带区的一个比特。位带操作只适用于数据访问,不适用与取指操作。   2)、地址空间另一个512范围由片上外设(的寄存器)使用。这个区也有一条32MB的位带别名,以便于快捷的访问外设寄存器。   3)、还有两个1GB的范围,分别用于连接外部RAM和外部设备,它们之间没有位带。两者的区别在于外部RAM区允许执行指令,而外设设备区则不允许。   4)、最后剩下0.5GB的地带是Cortex
发表于 2019-03-08
Cortex-M3存储器系统

Cortex-M3的整体风景

一、流水线  1、Cortex-CM3处理器使用一个3级流水线,流水线的3级分别是:取指,解码和执行:  2、当运行的指令大多数是16位时,处理器会每隔一个周期做一次取指。当执行到跳转指令时需要清洗流水线,处理器会不得不跳转目的地重新取指。为了改善这种情况,Cortex-CM3支持一定数量的v7M指令可以避免很多短程跳转。  3、由于流水线的存在,以及出于对Thumb代码兼容的考虑,读取PC会返回当前指令地址+4的值。  4、在处理器内核的预取单元中也有一个指令缓冲区,它允许后续的指令在执行前现在里面排队,也能在执行未对齐的32位指令时,避免流水线断流。二、详细框图 
发表于 2019-03-08
Cortex-M3的整体风景

Cortex-M0(NXP LPC11C14)启动代码分析

启动代码的一般作用1、堆和栈的初始化;2、向量表定义;3、地址重映射及中断向量表的转移;4、初始化有特殊要求的断口;5、处理器模式;6、进入C应用程序。ARM复位后程序从0x00地址开始执行代码,所以一般都会有将Flash地址映射到0x00的过程。但对于这一款Cortex M0的启动代码比较简单,从存储分布图中我们可以看到LPC11C14拥有32K的片内Flash,地址范围是0x0000 0000 ~ 0x0000 8000,当我们将程序(小于32K)烧写进片内Flash时,启动代码中就可以不用再对Flash的地址重新映射。NXP LPC11C14存储分布图主要看FlashCortexM0的启动代码进行分析:一、堆栈初始化部分
发表于 2019-01-15
Cortex-M0(NXP LPC11C14)启动代码分析

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 EEWORLD.com.cn, Inc. All rights reserved