Cortex-M系列的优劣对比

        我们来讨论Cortex-M系列,特别设计针对竞争已经非常激烈的MCU市场。Cortex-M系列基于ARMv7-M架构(用于Cortex-M3和Cortex-M4)构建,而较低的Cortex-M0+基于ARMv6-M架构构建。首款Cortex-M处理器于2004年发布,当一些主流MCU供应商选择这款内核,并开始生产MCU器件后,Cortex-M处理器迅速受到市场青睐。可以肯定的说,Cortex-M之于32位MCU就如同8051之于8位MCU——受到众多供应商支持的工业标准内核,各家供应商采用该内核加之自己特别的开发,在市场中提供差异化产品。例如,Cortex-M系列能够实现在FPGA中作为软核来用,但更常见的用法是作为集成了存储器、时钟和外设的MCU。在该系列产品中,有些产品专注最佳能效、有些专注最高性能、而有些产品则专门应用于诸如智能电表这样的细分市场。

      Cortex-M3和Cortex-M4是非常相似的内核。二者都具有1.25DMIPS/MHz的性能,配有3级流水线、多重32位总线接口、时钟速率可高达200MHz,并配有非常高效的调试选项。最大的不同是,Cortex-M4的内核性能针对的是DSP。Cortex-M3和Cortex-M4具有相同的架构和指令集(Thumb-2)。然而,Cortex-M4增加了一系列特别针对处理DSP算法而优化的饱和运算和SIMD指令。以每0.5秒运行一次的512点FFT为例,如果分别在同类量产的Cortex-M3 MCU和Cortex-M4 MCU上运行,完成同样的工作,Cortex-M3所需功耗约是Cortex-M4所需功耗的三倍。此外,也有在Cortex-M4上实现单精度浮点单元(FPU)的选项。如果应用涉及到浮点计算,那在Cortex-M4上完成比在Cortex-M3上完成要快得多。也就是说,对于不使用Cortex-M4上DSP或FPU功能的应用而言,其性能和功耗与Cortex-M3相同。换句话说,如果使用DSP功能,那就选择Cortex-M4。否则,就选择Cortex-M3完成工作。

    对于成本特别敏感的应用或者正在从8位迁移到32位的应用而言,Cortex-M系列的最低端产品可能是最佳选择。虽然Cortex-M0+的性能为0.95DMIPS/MHz,比Cortex-M3和Cortex-M4的性能稍稍低一些,但仍可与同系列其他高端产品兼容。Cortex-M0+采用Thumb-2指令集的子集,而且这些指令大都是16位操作数(虽然所有数据运行都是32位的),这使得它们能够很好的适应Cortex-M0+所提供的2级流水线服务。通过减少分支映射,系统就能节约一些整体功耗,而且在大多数情况下,流水线将保留接下来的四个指令。Cortex-M0+还具有专用的总线用于单周期GPIO,这意味着你能够利用位控制的GPIO实现确定接口,就像8位MCU那样,但却以32位内核的性能来处理该数据。

      Cortex-M0+的另外一个重要的不同特点是增加了微型跟踪缓冲器(MTB)。该外设可使设计人员在调试过程中使用一些片上RAM来存储程序分支。这些分支随后能够回传到集成开发环境中,而且可以重建程序流程。这一功能提供了一种初步的指令跟踪能力,这对于不具备扩展跟踪宏单元(ETM)功能的Cortex-M3和Cortex-M4来说比较有意义。从Cortex-M0+中提取的调试信息等级显著高于8位MCU,这就意味着那些难以解决的调试问题变得更加容易解决。

        综上所述,Cortex处理器系列产品为满足你的应用性能需求而提供了多种选项。无需劳神费力,也无论针对高端平板电脑还是物联网中超低成本的无线传感器节点,你都能够发现一款适合应用所需的处理器。

你可能感兴趣的:(ARM,Cortex-M)