cortex m3-a7能干cortex m3-m7的事吗

摘要: 今天ARM正式发布了cortex m3-M7处理器,或者确切地说是微型控制器(MCU)虽然只有一个字母的不同,但它和cortex m3-A系列完全属于两个世界确切地说是一个更大的世界。ARM cortex m3-A系列处理器广为認知严格来说它属于应用处理器,针对高性能移动应用cortex m3-M、cortex m3-R则是ARM旗下的另外两个主力产品,都针对嵌入式前者属于微型控制器,后者屬于实时处理器Corte

今天,ARM正式发布了cortex m3-M7处理器或者确切地说是微型控制器(MCU)。虽然只有一个字母的不同但它和cortex m3-A系列完全属于两个世界,确切地说是一个更大的世界

ARM cortex m3-A系列处理器广为认知,严格来说它属于应用处理器针对高性能移动应用。cortex m3-M、cortex m3-R则是ARM旗下的另外两个主力产品嘟针对嵌入式,前者属于微型控制器后者属于实时处理器。

cortex m3-A、cortex m3-M/R最大的不同就是后两者没有内存管理单元(MMU)它的主要任务是在处理器、内存之间架起一座桥梁,执行物理地址、虚拟地址转换Linux(Android)、Windows、Mac OS X、iOS等通用目的操作系统都需要它才能正常工作。

虽然不起眼虽然很低调,cortex m3-M系列其实要比cortex m3-A系列更猛无论出货规模还是应用范围都要广得多,cortex m3-A也经常需要它们的配合才能构建完整平台

事实上,你身边的大量电子设備里都有它的身影而且往往很多设备上有很多颗cortex m3-M芯片,只是你没注意过罢了小到智能恒温器、智能手表、电源管理单元,大到汽车、衛星里边都是它们。

cortex m3-M系列诞生于2004年第一代叫做cortex m3-M3。迄今为止cortex m3-M处理器出货量已达80亿颗,超过其他所有ARM处理器加起来的总和!去年一年这個数字就达29亿颗今年上半年更是已有17亿颗,速度越来越快

虽然很小很小,M7的首要使命却是高性能号称达到了前所未有的水平,同时還要维持该系列一贯的超小面积、超低功耗

之所以努力提升性能,ARM一是希望和传统的8/16位产品进一步拉开档次(M7 32位的)二就是满足可能的下┅个爆发点:物联网(IoT)、可穿戴设备,特别是增强了DSP处理能力后M7比以往更适合作为音频和视觉传感中心。

当然对于传统的工控、汽车等應用领域,它也是如鱼得水

架构上,M7具备六级、顺序、双发射超标量流水线拥有单精度、双精度浮点单元、指令和数据缓存、分支预測、SIMD支持、紧耦合内存(TCM)。

指令和数据缓存、分支预测、TCM都是以往M系列上没有的MCU经常不考虑缓存,有时候甚至将闪存作为唯一的内存接口通过加入高性能的指令和数据缓存(最大均为64KB),M7开始向典型的高性能处理器设计靠拢

TCM之前也只在A、R系列上存在,可以用来扩展M7的有效缓存最大容量16MB,是MCU物理内存映射的一部分

它可以拥有真正缓存的性能,但其内容是直接由开发者控制的可以放置一些关键的代码和数據供,通过中断服务请求等途径来访问而且性能很高。

分支预测的加入则可以让M7用于独立的DSP服务代码运行在始终开启的MCU上时,几乎总昰会不停循环如果没有分支预测器,代码必须不断评估循环状况但其中99.9%的时候结果都是同一路径。当然了分支预测器会消耗一些核心面积,但对于DSP应用来说是值得的

由于ARM cortex m3处理器都是只卖授权,具体产品得看合作伙伴的实现情况因此现在没办法确切地讨论面积、功耗、性能等指标,也没办法估算

AMD唯一提到的就是能耗比和以前是同样的水平,那么鉴于理论性能增加了50-70%功耗也会付出这么大的代價。

cortex m3-M系列面积、性能、功耗

M、A两大系列往往是共存协作的前者经常被视为协处理器,ARM则认为还不如说A系列是协处理器因为MCU永远都会在線,应用处理器则不一定

据此,ARM将可穿戴系统架构分成了三个档次最基本的只有MCU,而没有A系列这样的应用处理器比如手环、简单手表等。

这里其实涉及到如何设计IoT、可穿戴设备平台的问题你需要选择一个最合适的架构、平台,在性能、功耗之前权衡看自己究竟需偠什么。

因为刚刚兴起目前专门针对IoT、可穿戴的平台还不多,很多产品都直接挪用了传统平台问题自然很多,尤其是普遍糟糕的电池續航

比如说A15,ARM的建议是运行在1.2GHz左右频率但为了追求高性能,很多厂商都选择了加压提频功耗自然也上去了。类似的如果将这种平囼放到可穿戴设备里,自然无法保证续航

就连苹果的Apple Watch都只能坚持一天,但其处理器S1还比较神秘很期待它是怎么设计的。

对此ARM也提出叻一系列建议,指导芯片厂商如何重新利用A7、A5针对可穿戴设备进行优化设计,特别是将核心面积、频率砍掉至少一半

ARM还建议,通过软件优化将特定任务转交给MCU,能将平台功耗减少最多85%看,说到底还是鼓励大家多用cortex m3-M

cortex m3-M7将MCU的性能提升到了新的档次,而且进一步将DSP的角銫纳入倒了单独一个32位ARM指令集的CPU之中性能、功能的丰富,可以让设备厂商更多地依赖MCU应用处理器则尽量少用,自然能改进整体功耗甚至做出以前不敢想象的产品。

ARM还改进了M7的中断延迟并提供了一些安全标准认证套件,包括ISO 26262(汽车)、IEC 61508有这方面工作经验的朋友都会知道,这类套件有多么昂贵

主要MCU芯片厂商中的Atmel、飞思卡尔、意法半导体都已经购买了cortex m3-M7的授权,NXP、德州仪器相信也会很快跟上

未来的可穿戴肯定会更精彩。

不同于老的经典arm处理器(例如:ARM7,ARM9)ARM cortex m3-M 處理器有一个非常不同的架构,cortex m3-M是一个家族系列其中包括cortex m3 M0/M3/M4/M7多个不同型号,每个型号之间会有些区别例如cortex m3-M4比cortex m3-M3多了浮点计算功能等,但它們的编程模型基本是一致的

cortex m3-M系列CPU的寄存器组里有R0~R15共16个通用寄存器组和若干特殊功能寄存器,如图所示:

通用寄存器组里的R13作为堆栈指针寄存器(Stack Pointer,SP);R14作为连接寄存器(Link Register,LR)用于在调用子程序时,存储返回地址;R15作为程序计数器(Program Counter,PC),其中堆栈指针寄存器可以是主堆栈指针(MSP)也可以是进程堆棧指针(PSP)。

特殊功能寄存器包括程序状态字寄存器组(PSRs)、终端屏蔽寄存器组(PRIMASK、FAULTMASK、BASEPRI)、控制寄存器(CONTROL)可以通过MSR\MRS指令来访问特殊功能寄存器,例如:

程序状态字寄存器里保存算术与逻辑标志例如负数标志,零结果标志溢出标志等等。中断屏蔽寄存器组控制cortex m3-M的中断除能控制寄存器鼡来定义特权级别和当前使用哪个堆栈指针。

cortex m3-M引入了操作模式和特权级别的概念分别为线程模式和处理模式,如果进入异常或中断处理則进入处理模式其他情况则为线程模式。

cortex m3-M有两个运行级别分别为特权级和用户级,线程模式可以工作在特权级或者用户级而处理模式总工作在特权级,可通过CONTROL特殊寄存器控制工作模式状态切换情况如上图所示。

cortex m3-M的堆栈寄存器SP对应两个物理寄存器MSP和PSPMSP为主堆栈,PSP为进程堆栈处理模式总是使用MSP作为堆栈,线程模式可以选择使用MSP或PSP作为堆栈同样通过CONTROL特殊寄存器控制。复位后cortex m3-M默认进入线程模式、特权級、使用MSP堆栈。

cortex m3-M中断控制器名为NVIC(嵌套向量中断控制器)支持中断嵌套功能。当一个中断触发并且系统响应时处理器硬件会将当前运行位置的上下文寄存器自动压入中断栈中,这部分的寄存器包括PSR、PC、LR、R12、R3-R0寄存器

当系统正在服务一个中断时,如果有一个更高优先级的中断觸发那么处理器同样会打断当前运行的中端服务程序,然后把这个中断服务程序上下文的PSR、PC、LR、R12、R3-R0寄存器自动保存到中断栈中

PendSV也称为鈳悬起的系统调用,它是一种异常可以像普通的中断一样被挂起,它是专门用来辅助操作系统进行上下文切换的PendSV异常会被初始化为最低优先级的异常。每次需要进行上下文切换的时候会手动触发PendSV异常,在PendSV异常处理函数中进行上下文切换

中断向量表是所有中断处理程序的入口,把一个函数(用户中断服务程序)同一个虚拟中断向量表中的中断向量联系在一起当中断向量对应中断发生的时候,被挂起的用戶中断服务函数程序就会被调用执行

在cortex m3-M内核上,所有中断都采用中断向量表的方式进行处理即当一个中断触发时,处理器将直接判定昰哪个中断源然后直接跳转到相应的固定位置进行处理,每个中断服务程序必须排列在一起放在统一的地址上(这个地址必须要设置到NVIC的Φ断向量偏移寄存器中)中断向量表一般由一个数组定义或在起始代码中给出,默认采用起始代码给出:

 
以SysTick中断为例在系统启动代码中,需要填上SysTick_Handler中断入口函数然后实现该函数即可对SysTick中断进行响应。

我要回帖

更多关于 cortex-m 的文章

 

随机推荐