このドキュメントでは、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の数字との取り決めは何ですか?
回答:
ここに私が提供できるいくつかの指針があります。NXPが提供する仕様は、チップ全体(コア、メモリ、周辺機器)に対するものです。ARMが提供する仕様はコアのみに基づいています。数値は異なる方法で導出されるため、比較を行うのは非常に困難です。
したがって、私は後退して2つのデバイスを確認することをお勧めします。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で使用)を見てみましょう。電圧2V、1MHzで200uAが使用されていることがわかります。これにより、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の比較には偏りがあります。クロックレートが高いほど、1 MHzあたりの電流が少なくて済みます。たとえば、最新のMSP430は、アクティブモードでは8 / 16MHzで、1 MHzあたり80〜120uAの低電力で動作します。
正しく記述されたコードはMCUのアクティブモードを時間の1%(または0.1%)未満に保つため、電力モードはここで大きな違いをもたらすことに言及する価値があります。
他のMCUがウェイクアップするのに時間がかかる、またはRAMの内容を保持しない非常に便利な低電力状態のため、MSP430は実際には打つのが難しい(私はTI従業員ではありません)。