0

FP ユニットを持たないCortex-M3プロセッサ用にいくつかのコードを最適化する必要があります。とにかく、私はVS 2012 Release Candidateを使用して、PC( Intel Core i5Windows 7をOSとして)でコードをネイティブコンパイルし、それらをCortex_M3に移植します。浮動小数点演算をできるだけ使用しない方法ですが、まだいくつかあります。したがって、Cortex_M3に埋め込むと、代わりにエミュレートされたFPUコード(ソフトウェアFPU)が利用されることがわかります。私はcortex_m3のプロファイリングを行うことができないので、VS2012(インストルメンテーション法)を使用してPCで実行し、どの機能がより時間がかかり、より最適化する必要があるかを確認しました。私のPCのFPユニットを使用しない場合、PCでのプロファイリング結果はCOrtex_M3の結果に比例すると思います。(ハードウェア) FP ユニットをスキップできる Visual Studio (2008 pro または 2012 RC) のキーワードまたは方法はありますか?

あなたの洞察は非常に高く評価されています

4

1 に答える 1

1

お使いの PC は Cortex M3 とはまったく異なり、そこで実行された最適化はほとんど関係がありません。いくつかの違い:

  • PC はサイクルごとに複数の命令を発行できます
  • PC では 1 秒あたり数十億回のサイクルがあるのに対し、数千万回です。
  • PC には、M3 の RAM よりも多くのキャッシュが搭載されている可能性があります
  • ご覧のとおり-浮動小数点ユニット

M3 は組み込みプロセッサです。従来の方法でプロファイリングできない場合は、より優れたツールセットを入手するか、デバイスのハードウェア タイマーを使用して手動で機能の時間を計ります。または、いくつかのポートピンを切り替えて、オシロスコープをぶら下げます-それは適切に埋め込まれています:)

編集:


OS なしでプロファイリングできます- ハイエンドの組み込みツールチェーンは、コードを計測して実行し、後処理のために結果を引き出すことができます


ウォッチドッグ以外にもハードウェア タイマーがあります。最も単純なレベルでは、何らかのタスクを実行する前に値を読み取り、後で値を読み取り、結果を減算して出力する関数をいくつか記述します。より複雑なスキームを実行して、多くの反復をログに記録し、統計を追跡することもできます。


ポート ピンがいくつかある場合は、プロファイリングする関数の前に 1 つだけ設定し、完了したらクリアします。

4 チャネル スコープを使用すると、一度に 4 つのコード セクションの実行時間 (およびそれらが互いに相対的に発生する時間。これは、1 つのコードが別のセクションに割り込む場合に役立ちます) を確認できます。もっと持っている場合は、ロジック アナライザーを入手してください。

また、有益な実行時間のジッターまたは変動も確認できます。角度が変化するにつれて libc trig 関数で試してみてください。いくつかの角度では、sin/cos 関数 (たとえば) が他の角度よりも実行に時間がかかることがわかります。これは、リアルタイム システムでは重大な問題になる可能性があります。

于 2012-06-27T08:55:29.283 に答える