8ビットのコントローラーと比較して、Cortex M0はどのように機能しますか?


10

このドキュメントでは、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の数字との取り決めは何ですか?


3
@fredericoこれは非常に負荷の高い質問であり、簡単な答えはありません。私の経験から、他のものがパフォーマンスを決定します。プリフェッチ機能、バス速度、バスにぶら下がっているペリフェラルの数、フラッシュアクセス速度などのようなものです。システムを適切にプロファイリングすると、ほとんどの場合、データがとボトルネックになります。さて、あなたがあなたのアプリケーションを詳述するならば、私はプロセッサを選択するための最良のルートが何であるかについての洞察を提供させていただきます。
フランク

1
@フランク:Dhrystoneベンチマークでは、プリフェッチやバス速度などが暗黙的に考慮されていませんか?特に、矛盾するNXP M3の数値を明らかにしてもらいたいと思います。詳細がまだ存在しないため、アプリの詳細を提供できません:-)
フェデリコルッソ

@Frederico、私は自分が平均的なエ​​ンジニア以下だと考えています。確かに建築家ではありません。データはほとんどの場合マッサージされるので、私はそこのベンチマークを信用しません。たとえば、データの出し入れを必要とする高速データシンクがあり、その間にメモリやその他の周辺機器にアクセスする必要がある場合、このケースのバスが邪魔になります。これらのプロセッサーは、平均的なユースケース向けに設計されています。いくつかのメモリの読み取り/書き込みを必要とする特定のデータのソフトデコードを実行しているときに、データパスがオーバーフローまたは不足する場合があります。これは通常、ソフトウェアの開発者にとって眠れない夜に終わります。
フランク

最近のDhrystoneは楽しいおもちゃですが、あまりわかりません。ベンチマークは一般的にはほとんど何も教えてくれません。アプリケーションを取得して実行する必要があります。コードやハードウェアを変更しないことを選択したコンパイラでは、パフォーマンスにプラスまたはマイナスの数倍の違いが生じる可能性があるため、これはすべて非常に困難です。数値があなたの望むものを示すようにするベンチマークを作ることができます。
old_timer '10 / 10/14

ARMは、純粋なパフォーマンスのために残りの部分を一周します(サイズは同じで価格も同じで、必ずしも電力ではありません)。8051もPICと同じくらい遅いとは思いませんが、失われたクロックの数を調べて、有用なことを行うことはできますか?asmを使用すると、人々はCを使用し、見るのに耐えられなくなります。msp430、それをオフにするアプリにおそらく必要です。ブルームーンに一度目が覚めると、テレビのリモコンなどのいくつかのことを行ってからスリープ状態になります。
old_timer

回答:


9

ここに私が提供できるいくつかの指針があります。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の効率に取り組む多くのアプリケーションにとって、最も重要なことではありません。

お役に立てば幸いです。消費電力は少し悪いとは言いがちですが、これらのクロックサイクルでは、他のチップよりもはるかに多くのことができます。したがって、それは実際にアプリケーションに依存します。


1
最初の段落について:ARMの数値がほぼコアの場合、ペリフェラルパワーを含むNXPの数値よりも高くする必要があります。しかし、彼らは低いです。私もそれを説明することはできません。
stevenvh

1
また、コントローラを同じ電圧で比較する必要があります。MPC430のように3VでLPC1111を実行する場合、それらの消費電力は非常に近くなります。NXP ARMには悪くありません。MSP430は低電力で知られています。
stevenvh

1
MSP430と比較してARM cortexデバイスで発生した大きな問題の1つは、ARMデバイスが多くのプロセッササイクルを消費して、低電力モードから実行状態に戻る可能性があることです。RAMデータは失われ、(バッテリでバックアップされたSRAMは別として)再作成/初期化する必要があります。PLLとクロックシステムを再起動する必要があります。MSPは、スリープ状態になったときからすべてのRAMをそのままにして、次の命令から再開します。プロセスがアクティブモードとスリープモードの間の頻繁な移行を伴う場合、ARMは失われます。
2013年

3

12MHzと1MHzの比較には偏りがあります。クロックレートが高いほど、1 MHzあたりの電流が少なくて済みます。たとえば、最新のMSP430は、アクティブモードでは8 / 16MHzで、1 MHzあたり80〜120uAの低電力で動作します。

正しく記述されたコードはMCUのアクティブモードを時間の1%(または0.1%)未満に保つため、電力モードはここで大きな違いをもたらすことに言及する価値があります。

他のMCUがウェイクアップするのに時間がかかる、またはRAMの内容を保持しない非常に便利な低電力状態のため、MSP430は実際には打つのが難しい(私はTI従業員ではありません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.