与 8 位控制器相比,Cortex M0 的性能如何?

电器工程 微控制器 表现
2022-01-29 07:54:47

本文档引用了 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 的数字是怎么回事?

2个回答

以下是我可以提供的一些建议。恩智浦提供的规格适用于他们的整个芯片(内核、内存、外围设备)。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)。我们看到在 1MHz 下使用 200uA,电压为 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 相形见绌。因此,对于很多应用来说,处理 MCU 的效率并不是最重要的事情。

我希望这会有所帮助。可以说功耗稍差一点是很长的路要走,但是与其他芯片相比,您可以通过这些时钟周期完成更多工作。因此,这实际上取决于您的应用程序。

比较 12MHz 和 1MHz 是有偏差的 - 更高的时钟速率需要更少的每 MHz 电流。例如,最新的 MSP430 可以低至每 MHz 80-120uA,在活动模式下为 8/16MHz。

值得一提的是,正确编写的代码将 MCU 的活动模式保持在 1%(甚至 0.1%)以下的时间,因此电源模式在这里有很大的不同。

在现实生活中,MSP430 很难被击败(我不是 TI 员工),因为它非常有用的低功耗状态,其他 MCU 需要更长的时间才能唤醒或不保留 RAM 内容,这很荒谬。