该文件指出Cortex M0为60 DMIPS / mW,而M3为31 DMIPS / mW。(后者与本文档中的数字不一致,引用了1.25 DMIPS / MHz和0.19 mW / MHz,给出6.6 DMIPS / mW。)
有人知道M0性能/功率与8/16位控制器相比如何吗?像AVR,PIC和MSP430?M3的数字又如何处理?
该文件指出Cortex M0为60 DMIPS / mW,而M3为31 DMIPS / mW。(后者与本文档中的数字不一致,引用了1.25 DMIPS / MHz和0.19 mW / MHz,给出6.6 DMIPS / mW。)
有人知道M0性能/功率与8/16位控制器相比如何吗?像AVR,PIC和MSP430?M3的数字又如何处理?
Answers:
这是我可以提供的几个指针。恩智浦提供的规格是针对其整个芯片(核心,内存,外设)的。ARM提供的规范仅基于核心。由于数字的推导方式不同,因此很难进行比较。
因此,我建议我们退后一步,看看两个设备。基于NXP M0的MCU和基于MXP M3的MCU。
对于基于M0的MCU,我们来看一下LPC1111。当该MCU执行繁忙的空闲循环时,它将以12MHz的时钟速率消耗3mA的电流。这将产生250uA / MHz,在3.3V时为825uW / MHz。
对于基于M3的MCU,我们来看一下LPC1311。当该MCU执行相同的忙闲循环时,它将在12MHz时消耗4mA的电流。产生333.3uA / MHz,即1.1mW / MHz。
如果我们看一看MSP430C1101 MCU(16位),我们将看到电压为3V时,它将在1MHz下使用240uA。产生720uW / MHz。
接下来,让我们转到ATMega328(在Arduino Uno中使用)。我们看到200uA在1MHz电压下使用2V。这产生400uA / MHz。
还应注意,MSP430和AVR的规格不同。它们的功耗以1MHz给出,而M0和M3的功耗为12MHz。这意味着将M0和M3放大到12MHz时,效率低下。
这些值都是有功电流消耗数。如果您查看设备处于睡眠状态时的电流消耗,则会发现所消耗的功率要少几个数量级。32位M0提供的优势在于,与8位和16位MCU相比,它可以在更短的时间内完成更多的工作。这意味着对于给定的工作负载,它将在睡眠状态上花费更多的时间。尽管有功功耗不同,但由经验丰富的工程师掌握的M0往往比熟练程度较低的工程师掌握的8位MCU的电源效率要好得多。
根据我的经验,M0的有源功耗非常接近16位和8位,因此您可以弥补应用程序中的许多差异。而且,与MCU相连的所有东西的功耗通常都使MCU相形见many。因此,对于许多应用程序而言,提高MCU的效率并不是最重要的事情。
希望对您有所帮助。长话不说,功耗稍差一些,但是用这些时钟周期完成的工作要比其他芯片多得多。因此,这实际上取决于您的应用程序。