ARM Cortex M0 + CoreMarkの評価



Arm Cortex M0 Coremark Ratings



解決:

短い答え:

  1. はい
  2. 番号

長い答え:



ARMコアには、各メーカーが実装を決定する場合としない場合がある機能があります(キャッシュ、バスフェッチ幅、FPU、MPUなど。もちろん、可用性はコアのタイプ(7xx、9xx、M0、M0 +、M3など)によって異なります。 M7など)。

一部の機能があるかどうかは、CPUパフォーマンスに影響します。



次の画像は、SAMD21データシートから取得したものです。ご覧のとおり、高速乗算器と32ビットのフェッチ幅を実装することにしました。これにより、SAMD21が2.46 CoreMark / MHzの数値に到達した可能性があります。

ここに画像の説明を入力してください

データシートには次のように記載されています。



SAM D21デバイスは、最大周波数48MHzで動作し、2.46 CoreMark / MHzに達します。

(ちなみに、SAMD20は、2.14だけでなく、その数値に達することができるとも述べています)。

SAMD20デバイスは48MHzの最大周波数で動作し、2.46CoreMark®/ MHzに達します。

ASMで2つの異なるCortexM0 +をプログラミングし、異なるオプションを備えている場合(たとえば、一方は低速の乗数と16ビットバス命令のフェッチ幅を持ち、もう一方は高速の乗数と32ビットのフェッチ幅を持ちます)、結果は異なります。アクセス時間が異なるメモリでテストを実行した場合も、結果は異なります。

また、Coremark WebサイトにあるCoremarkの結果は、コンパイラのバージョン(およびテストのコンパイルに使用されるフラグ)を指定します。したがって、それらはコンパイラにも依存します。


m0 +コアのバリエーションはわかりませんが、チップが異なればメモリバス接続とフラッシュコントローラーも異なります。フラッシュメモリは通常、最新のマイクロコントローラに追いつくには遅すぎます。ほとんどのマイクロコントローラーは フラッシュアクセラレータ シーケンシャルアクセスを高速化します。ただし、ジャンプや分岐などのランダムアクセスでは、複数の待機サイクルが含まれる可能性があります。

これは、コントローラーがより低いクロック速度で実行されている場合、コントローラーがより高いCoremarks / MHzの数値に到達できることを意味する可能性があります。もちろん、より高いクロック速度のプロセッサは、より高いクロックでより多くの待機状態が発生する可能性があると言って、より多くの計算を完了します。一部のマイクロコントローラは、待機状態がほとんどないにもかかわらず、非常に優れたFLASHアクセラレータを備えています。

さらに、一部のマイクロコントローラーには、SRAMからベンチマークを実行するのに十分なSRAMスペースとブロックがある場合があります。データアクセスとの競合がない場合、これはより高速になる可能性があります。 ARMは、特定のベンダーのFLASH実装ではなく、CPUコアのベンチマークに関心があるため、この手法でテストする可能性があります。

コンパイラ技術の進歩も同様に劇的です。これは、さらに不確定な場合があります。コンパイラーは一般的なケースで非常にうまく最適化できますが、それでも奇妙なコードを生成する可能性があり、それは一見無関係なコード変更でも変更されます(特定のルーチンにまったく触れていない場合でも)。

さらに、私の経験では、一部のアーキテクチャ固有のコンパイラフラグにより​​、特定のプログラムが高速になり、他のプログラムが遅くなる可能性があります。 O2またはOsでさえ、速度を最適化することを目的としたO3よりも高速なコードをGCCで作成することがあります。

coremarkデータベースには、使用されているコンパイラのバージョンとプログラムのすべてのコンパイルフラグが常に一覧表示されます。ベンチマークはベンチマークコードに変更を加えることを許可されていないため、コンパイラーが実行できる最適化にあまり干渉しません。これらの条件が満たされていることを確認することが最も公正な比較です。しかし、それでもあちこちで違いがあるかもしれません。


SAMD20のデータシートも2.46を参照しています。 ArmサイトのEEMBC結果へのリンクをたどるとわかるように、メモリ構成、コンパイラ、およびコンパイラフラグがベンチマークの結果に違いをもたらします。ベンチマークはCで記述されているため、アセンブラーではなくコンパイラーを使用する必要があります。これはベンチマークの性質であり、コンパイラがコアをターゲットにするのがどれだけ優れているか(および特定のCコードがハードウェアにどれだけうまくマッピングされているか)の側面が含まれています。

Cortex-M0 +は、高速または小型の乗数で構成できます。ここの部分のデータシートは、単一サイクルの乗算が実装されていることを示しています。データシートのページ40は、Armコアのr0p1が実装されていることを示しています。

異なる低電力MCUパーツ間の重要な要素は、メモリアーキテクチャである可能性があります。たとえば、フラッシュメモリ幅、中間命令フェッチバッファリングなど。たとえば、16ビット幅の命令フラッシュメモリを実装したり(命令セットがThumbであるため)、CPUクロック速度をフラッシュ速度よりも速くしたりすることができます。 (そしておそらくワイドフラッシュインターフェース)-すべて異なるトレードオフがあります。