您的位置 首页 传感器

为什么说Cortex-M是低功耗使用的首选

虽然Cortex-M处理器家族目标瞄准效能光谱较低端的区域,但是和大多数微控制器(MCU)采用的其他典型处理器相比,Cortex-M的效能依然算相当强悍。举例来说

尽管Cortex-M处理器宗族方针瞄准效能光谱较低端的区域,可是和大大都微操控器(MCU)选用的其他典型处理器比较,Cortex-M的效能仍然算适当强悍。举例来说,像是许多高效能微操控器所选用的Cortex-M4与Cortex-M7处理器,其最高时脉频率就高达400MHz。

当然在挑选处理器时效能并非仅有考量的要素。在许多运用中,低功耗与成本是顾客最关心的规范。因而,Cortex-M处理器宗族归入各种类型的产品来因应不同的需求(表1)。

Cortex-M和传统ARM处理器(像是ARM7TDMI、ARM9)截然不同之处,便是大幅改造的架构。举例来说:

·仅援助ARM Thumb指令,但在Thumb-2中,已延伸成能援助16位元与32位元指令。

·中止处理使命,由名为巢状向量中止操控器(NVIC)的内建中止操控器履行,NV%&&&&&%供给主动优先排程、中止遮罩与巢状装备、以及体系破例处理。

·中止处理程序(Handler)可写成正规的C言语函式以及向量化中止处理机制,不须运用软体去判别该服务哪个中止。而中止的回应则归于决定性,并具有低推迟特性。

·中止向量表方面,从分支指令改成中止的开始位址以及体系破例处理程序。

·暂存器区块(bank)以及程式开发形式的部分细节亦有所变化。

这些改动意谓许多针对传统ARM处理器编撰的组合言语程式码有必要进行修正,而旧的Projects档在移植到Cortex-M时有必要进行修正与从头编译。

指令集概述

在大大都状况中,软体的程式码多以C或其他高阶言语编撰。不过,假如对Cortex-M处理器所援助的指令集有根本的知道,能协助判别特定使命需要用到哪一种Cortex-M处理器。指令集架构(ISA)是处理器架构的一部分,Cortex-M处理器能区分红几种架构类型(表2)。

一切Cortex-M处理器都援助名为Thumb的指令集。在Thumb-2技能释出后,整个Thumb指令集就变得适当巨大。但是,不同Cortex-M处理器援助Thumb ISA里的指令子调集也不一致,如图1所示。

图1 各款Cortex-M处理器援助的指令集

Cortex-M0/M0+/M1处理器以ARMv6-M架构为根底,其指令集很小,只要56个指令,其间大大都为16位元,如图1中较小的椭圆形。不过,处理器中的暂存器以及处理的材料仍然为32位元。关于大大都简略的I/O操控作业以及生成材料处理,这样的小指令集就现已满足敷衍。因为指令集很小,因而仅须用少数的逻辑闸就能建置处理器,像是Cortex-M0与Cortex-M0+处理器仅需1.2万个逻辑闸。不过,这些指令傍边有一些不能用有高位暂存器(R8到R12),并且在即时生成材料方面的才干适当有限。这首要是为了在超低功耗处理器规划以及效能之间作折衷。

Cortex-M3处理器是以ARMv7-M架构为根底,并援助大上许多的指令集,傍边有许多归于32位元指令,让体系能更有功率地运用高位暂存器。此外,它还援助向量表分支指令与条件履行(运用IT指令)、硬体除法指令、乘加(MAC)运算、可变位元栏位作业。

具更多指令集Cortex-M3效能大提高

更多的指令能透过几种方法提高效能。例如像32位元Thumb指令能供给较大规模的当即材料值、分支偏移、以及当即偏移以利材料记忆体的存取。别的,它还对DSP作业供给根本援助(像是几个MAC指令,须用几个时脉周期,别的还有饱满调整指令)。最终,32位元指令答应滚筒移位器和多个材料处理作业在同一个指令中操作。

但是,更大的指令集,价值便是矽元件面积与耗电都添加。在典型微操控器中,Cortex-M3的逻辑闸数量会比Cortex-M0或Cortex-M0+规划的逻辑闸多两倍以上。但因为在大都现代微操控器中处理器,只占一小部分的矽元件空间,因而较大的矽元件空间以及功耗发生的影响也变得微乎其微。

Cortex-M4处理器在许多层面适当相似Cortex-M3,包含管线与程式开发形式。它除了援助Cortex-M3的一切功用,还额定援助DSP运用方面的指令,像是SIMD、饱满演算法指令、以及各种能在单周期完结的MAC指令(相关于Cortex-M3的多周期指令以及有限部分),选配的浮点运算单元能援助各种单精度浮点运算。

Cortex-M4的SIMD作业能一起处理两个16位元材料或4个8位元材料。举例来说,图2显现QADD8以及QADD16作业。

图2 SIMD指令典范:QADD8与QADD16

在某些DSP作业方面,因为核算能一起履行,因而,SIMD能让体系能更快运算16位元与8位元材料。但是,在一般程式开发方面,C言语编译器不太可能用到SIMD功用。这也导致Cortex-M3与Cortex-M4会发生我们常见的效能量测成果。然后,Cortex-M4的内部材料通道和Cortex-M3并不相同,Cortex-M3的通道在一些事例中援助更快的材料处理(像是单周期MAC,能在一个周期内将材料写回两个暂存器)。

Cortex-M7处理器的指令集援助相似Cortex-M4,别的还参加:

浮点运算架构方面,以FPv5为根底而不是FPv4 (Cortex-M4所选用),因而额定参加几个浮点运算指令。

选配双精度浮点运算指令。

援助预载材料(PLD)指令,让体系预先载入快取材料。

Cortex-M7的管线和Cortex-M4有极大差异。它具有一个6阶双发送管线,发挥更高的效能。大大都针对Cortex-M4编撰的软体,都能在Cortex-M7重复运用,不过软体有必要从头编译,才干针对管线特性的差异做最好的优化,在一些事例中,软体还需要一些微幅更新,才干运用像是快取在内的新功用。

Cortex-M23处理器的指令集以ARMv8-M基线sub-profile为根底,一起也是ARMv6-M的超调集。额定添加的指令包含硬体除法指令;比较与分支、以及32位元分支指令;TrustZone安全延伸的指令;互斥存取指令(一般用在旗标作业);16位元当即生成材料指令;Load acquire与store release指令(合作C11版C言语规范援助)。

在某些状况,这些指令集的加强有助于提高效能。别的,关于内含多个处理器的SoC规划也有助益(像是互斥存取在跨处理器的旗标传递适当有用)。

因为Cortex-M33的规划有极高的设定弹性,其间一些指令也归于选配,例如像是:

DSP指令(包含Cortex-M4与Cortex-M7处理器都有援助)都归于选配。

单精度浮点运算的援助才干归于选配。这项援助以FPv5为根底,比Cortex-M4浮点运算援助才干多了几项指令。

此外,Cortex-M33还援助ARMv8-M主线sub-profile,其间包含:

TrustZone安全延伸的指令。

Load Acquire与Store Release 指令(合作C11版C言语规范的援助才干)。

ISA功用比较总结

ARMv6-M、ARMv7-M、以及ARMv8-M架构具有为数众多的ISA特征,很难逐个具体介绍,所以在表3汇整其间要害的差异。

Cortex-M处理器中ISA其间一项要害特性便是向上相容性。Cortex-M处理器所援助的指令,系为Cortex-M0/M0+/M1的超调集(Superset)。因而,理论上假如记忆体地图相同,Cortex-M0/M0+/M1的二进位映像档就能直接在Cortex-M3上运转。Cortex-M4/M7和其他Cortex-M处理器之间也存在这样的相容性,Cortex-M0/M0+/M1/M3的指令能在Cortex-M4/M7上履行。

尽管Cortex-M0/M0+/M1/M3/M23处理器没有浮点运算单元选项,但可以用软体来履行浮点运算。别的,自身没有浮点运算单元的Cortex-M4/M7/M33也可用软体履行浮点运算。在这些处理器中,当运用程式处理浮点运算材料,编译程式在链结阶段会刺进所需的履行阶段函式库函数。运用软体来履行浮点运算,除了运算时刻变长,程式码长度也会略为增加。但假如没有频频履行浮点运算,所开发的运用也合适选用这种类型的处理器。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/chuanganqi/153933.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部