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

2017-07-28 16:09:00 来源: 互联网

china0513-624x468

来源:内容来自新电子 ,谢谢。

虽然Cortex-M处理器家族目标瞄准效能光谱较低端的区域,但是和大多数微控制器(MCU)采用的其他典型处理器相比,Cortex-M的效能依然算相当强悍。举例来说,像是许多高效能微控制器所采用的Cortex-M4与Cortex-M7处理器,其最高时脉频率就高达400MHz。

当然在选择处理器时效能并非唯一考量的因素。在许多应用中,低功耗与成本是顾客最关切的标准。因此,Cortex-M处理器家族纳入各种类型的产品来因应不同的需求(表1)。

china0513-624x468

Cortex-M和传统ARM处理器(像是ARM7TDMI、ARM9)大相径庭之处,就是大幅改造的架构。举例来说:

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

  • 中断处理任务,由名为巢状向量中断控制器(NVIC)的内建中断控制器执行,NVIC提供自动优先排程、中断遮罩与巢状配置、以及系统例外处理。

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

  • 中断向量表方面,从分支指令改成中断的起始位址以及系统例外处理程序。

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

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


指令集概述

china0513-624x468

在大多数情况中,软体的程式码多以C或其他高阶语言撰写。不过,如果对Cortex-M处理器所支援的指令集有基本的认识,能帮助判断特定任务须要用到哪一种Cortex-M处理器。指令集架构(ISA)是处理器架构的一部分,Cortex-M处理器能区分成几种架构类型(表2)。

china0513-624x468

所有Cortex-M处理器都支援名为Thumb的指令集。在Thumb-2技术释出后,整个Thumb指令集就变得相当庞大。然而,不同Cortex-M处理器支援Thumb ISA里的指令子集合也不一致,如图1所示。

china0513-624x468

图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效能大提升

china0513-624x468

更多的指令能透过几种方式提升效能。例如像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作业。

china0513-624x468

图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功能比较总结

china0513-624x468

ARMv6-M、ARMv7-M、以及ARMv8-M架构具有为数众多的ISA特色,很难逐一详细介绍,所以在表3汇整其中关键的差异。

china0513-624x468

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也可用软体执行浮点运算。在这些处理器中,当使用程式处理浮点运算资料,编译程式在链结阶段会插入所需的执行阶段函式库函数。使用软体来执行浮点运算,除了运算时间变长,程式码长度也会略为增长。但如果没有频繁执行浮点运算,所开发的应用也适合采用这种类型的处理器。

今天是《半导体行业观察》为您分享的第1348期内容,欢迎关注。

R

eading

推荐阅读(点击文章标题,直接阅读)

从江阴小厂到世界前三,长电科技一路狂奔

芯原董事长戴伟民:做芯片设计平台即服务(SiPaaS)应当耐得住寂寞,经得起诱惑

7nm是最后一个主要节点?

关注微信公众号 半导体行业观察,后台回复关键词获取更多内容

回复 雄心 ,看《苹果的芯片帝国雄心》

回复 张汝京 ,看《中国半导体教父张汝京的“三落三起”》

回复 国产 ,看《国产手机崛起背后的最大受益者》

回复 ASR ,看《ASR收购Marvell MBU背后:一段有关RDA的爱恨情仇》

回复 IC ,看《一文看懂 IC 产业结构及竞争关系》

回复 展会,看《2017最新半导体展会会议日历》

回复 投稿 ,看《如何成为“半导体行业观察”的一员 》

回复 搜索 ,还能轻松找到其他你感兴趣的文章!

摩尔邀请您加入精英微信群

你好,感谢长期对半导体行业观察的关注和支持!为了方便各位精英专家交流,我们组建了一些专业、微信交流群,欢迎你加入,我们还会邀请在摩尔直播App做过技术和行业分享的100+技术大牛入群和大家交流。加群方法: 长按二维码,加群主为好友,填写加群需求信息,拉你入群。(微信限制每天好友添加数量只有300人,请耐心等待)

china0513-624x468

地域群:

上海、深圳、北京、江苏.浙江、西安、武汉、成都.重庆、合肥、厦门.晋华、大连、台湾、新加坡、日本.韩国、美国、欧洲、摩尔直播学习群。

专业群:

模拟射频设计、EDA.IP、数字芯片设计、模拟混合信号设计、版图Layout、数字PR.验证、晶圆制造Fab、设备EE、半导体材料、半导体设备、封装测试、半导体投资、市场销售、AE.FAE、嵌入式开发、实习交流、采购.IC代理、AI芯片

专业微信群规则:

1. 专业、高效交流,建议进群请修改群昵称,格式:公司或学校+职位或专业+中文或英文,请服从群主管理,如果多次违规会被请出交流群;

2. 原则上每人加不超过3个群,精彩讨论内容,群主会负责在不同群同步,既然加了群,请大家尽量置顶群,积极参与群讨论;

3. 群里聊天讨论仅限半导体专业内容,杜绝专业无关内容,特别是养生、拉票、微商等内容,严格禁止,为自己公司打广告以不引起群友反感为限;

4. 前100人免费,超过100人后,新进群者发新人红包,金额随意,讨个彩头。群友每增加100人,群主发群红包庆祝,金额等于群友人数。

china0513-624x468

责任编辑:mooreelite
半导体行业观察
摩尔芯闻

热门评论