Cortex-M7来了,更好更强大

作者:卢老师,华清远见教育科技集团讲师。

近几年,ARM公司在Cortex-M推出很多新产品,Cortex-M0以低廉的价格,超高的性价比,近乎完全取代8051,Cortex-M1以软核方式提供给FPGA 厂商,Cortex-M3更是家喻户晓。在2010年,Cortex-M4的推出更是给Cortex-M系列的微处理器贴上的高大上的标签。

与Cortex - M3的相同,MPU是一个Cortex - M4中用于内存保护的可选组件。M4处理器支持标准ARMv7内存保护系统结构模型。您可以使用在MPU执行特权/访问规则,或者独立的进程。Cortex-M4执行的所有的DSP指令集都可以在一个周期完成,Cortex - M3需要多个指令和多个周期才能完成的等效功能。即使是PID算法——通用DSP运算中耗费资源的工作,Cortex - M4也能提供了一个1.4倍的性能得改善。另一个例子,MP3解码在Cortex-M3需要20-25Mhz,而在Cortex-M4只需要10-12MHz。通俗的理解 Cortex-M4新增加的DSP指令,而其DSP运算能力比16位的专用DSP芯片高,但又低于32位的专用DSP芯片,但其综合性能和性价比可以满足很多产品的使用。

如果说Cortex-M4使Cortex-M系列拥有了较高的运算能力和优异的架构特性,那Cortex-M7则可以称为Cortex-M系列的一次超越。

上月,ARM正式发布了新一代处理器“Cortex-M7”,或者更确切地说是新一代微型控制器(MCU),面向高端嵌入式市场。ARM官方表示,Cortex-M7的计算性能和DSP处理能力是现有产品的两倍,可让厂商以低成本满足高性能嵌入式应用需求,包括马达控制、工业自动化、高级音频、图像处理、联网车载应用、物联网(IoT)和穿戴式设备。

Cortex-M7的内核仍然支持C语言编程,完全兼容现有产品,生态系统和软件可以无缝过渡。

Cortex-M7架构上采用了六级流水线、超标量加分支预测设计,32位指令集,40nmLP工艺下可在400MHz频率上提供2000 CoreMark的性能,相信在28nm Cortex-M7 MCU到来之后,更有望突破4000 CoreMarks。

它拥有AMBA4 AXI互联(支持64位传输)和完全集成缓存(可选),可高效访问外部内存和外设。

一级指令缓存0-64KB,双路关联;一级数据缓存0-64KB,四路关联。指令、数据紧耦合内存(TCM) 0-16MB。以上还都可选支持ECC。

ARM已经向Ateml、飞思卡尔、以及意法半导体等合作伙伴发放了Cortex-M7的授权。当然快推出Cortex-M7芯片当属意法半导体公司(ST)。ST抢先发布STM32 F7高性能处理器,目前STM32F756NG高性能微控制器的样片仅提供给主要客户,STM32 F7虽然性能提高了,但是能效并没有影响。尽管功能更多,新系列运行模式和低功耗模式(停止、待机和VBAT)的功耗与STM32 F4保在同一水平线上:工作模式能效为7 CoreMarks/mW;在低功耗模式下,当上下文和SRAM内容全都保存时,典型功耗低120 uA;典型待机功耗为1.7uA;VBAT模式典型功耗为0.1uA。

除意法半导体的ART AcceleratorTM 和 4KB指令和数据缓存外,STM32 F7还集成智能灵活的系统架构:

·An AXI和先进高性能总线矩阵(Multi-AHB, Advanced High-performance Bus),内置双通用直接访存(DMA)控制器和以太网、通用串行总线On-the-Go 高速(USB OTG HS, Universal Serial Bus On-the Go High Speed)和Chrom-ART AcceleratorTM图形硬件加速等设备专用DMA控制器;

·采用512KB和1MB嵌入式闪存,可满足应用对大容量代码存储需求;

·大容量分布式架构SRAM:

o在总线矩阵上有320KB共享数据存储容量(包括240KB +16KB)和保存实时数据的64KB紧耦合存储器(TCM, Tightly-Coupled Memory)数据RAM存储器;

o保存关键程序的16KB指令TCM RAM存储器;

o在低功耗模式下保存数据的4KB备份SRAM存储器。

·STM32 F7外设还包括一个独立的时钟域,可在不影响通信速度的情况下让开发人员修改系统时钟速度

·灵活的内置32位数据总线的外存控制器:SRAM、PSRAM、SDRAM/LPSDR SDRAM、 NOR/NAND存储器

·即便引脚数量少的封装也提供双/四路SPI接口,以低成本方式扩展存储容量

·基于现有的STM32 F4系列指令集,仅提供单周期乘法累加(MAC)指令,提供单指令多数据流(SIMD)指令,该指令计算32位字内的8位和16位值。