Skip to main content

IAR Embedded Workbench for Arm 9.70.x

プロファイラの概要

このセクションの内容:

プロファイラの用途

関数プロファイリングを行うと、実行中に最も多くの時間を費やす、ソースコードでの関数の検索が簡単になります。コードを最適化する際にはこれらの関数に注目します。簡単に関数を最適化するには、実行速度最適化を指定してコンパイルします。別の方法として、関数で使用するデータをより効率のよいメモリ内に移動することもできます。 効率的なメモリの使用方法の詳細については、組み込みアプリケーション用の効率的なコーディング』を参照してください。

または、[フィルタリング]を使用すると、たとえば個々の関数をプロファイリングされないように除外できます。コードの特定部分のみをプロファイルする場合は、[タイムライン]ウィンドウを使用して[間隔]を選択すると、それに対して C-SPY でプロファイリング情報が生成されます。

命令プロファイリング は、特にアセンブラのソースコードを非常に詳細なレベルで微調整するときに役立ちます。 命令プロファイリングは、C/C++ ソースコードのコンパイルで時間がかかった部分を把握するのに便利です。パフォーマンス向上のために、どのように書き直したらよいかのヒントになります。

プロファイラの概要について

関数プロファイリング情報は[関数プロファイラ]ウィンドウに表示されます。これはアプリケーションでの関数のタイミング情報です。プロファイリングは、ウィンドウのツールバーにあるボタンを使用して明示的に有効にする必要があります。有効にした後は、無効にするまではその状態に保持されます。

それをサポートするデバッグプローブの場合、C-SPY はリアルタイムでフル命令トレースをキャプチャできます。また[関数プロファイラ]ウィンドウの情報を処理できます。

命令プロファイリング情報は[逆アセンブリ]ウィンドウに表示されます。これは各命令の実行回数です。

ソースのプロファイリング

プロファイラは、さまざまなメカニズムやソースを使用してプロファイリング情報を収集できます。使用可能なトレースソースの機能によって、1 つまたは複数のソースをプロファイリングで使用できます。

  • トレース(コール)

    すべての関数の呼び出しとリターンを判定するために、命令のトレース全体(ETMトレース)が解析されます。収集された命令シーケンスが不完全だったり不連続の場合(ETMトレースの使用時に起こるときがあります)、プロファイリング情報は正確ではなくなります。

    コードカバレッジでETMトレースを有効にするには、このプロファイリングソース(またはトレース(フラット))を選択します。

  • トレース(フラット)/サンプリング

    命令フルトレース(ETMトレース)または各PCサンプル(SWOトレースから)の各命令は、関数呼び出しやリターンに関係なく、対応する関数またはコードフラグメントに割り当てられます。RTOSを使用していたり、完全なデバッグ情報を持たないコードをプロファイリングする場合など、アプリケーションが通常の呼び出し/リターンシーケンスの動作を見せないときにこれは非常に便利です。

    コードカバレッジでETMトレースを有効にするには、このプロファイリングソース(またはトレース(コール))を選択します。

Powerサンプリング

一部のデバッグプローブでは、開発ボードまたはボード上のコンポーネントの電力消費の サンプリングがサポートされています。各サンプルは PC サンプルに関連付けられ、サンプル時に先立つわずかな間隔の電力消費(実際のところは電流)を表します。プロファイルが Power サンプリングを使用するように設定されている場合、[プロファイラ]ウィンドウに追加の列が表示されます。各 Power サンプリングは、通常の PC サンプリングの場合と同じように関数またはコードフラグメントに関連付けられます。

注記

ただし、サンプルに対応するすべてのエネルギーが、その関数やコードフラグメントに関するものということではありません。電源サンプリングと命令実行のタイムスケールは大きく異なります。電力測定を 1 回行う間に、通常CPU は命令を数千回実行しています。Power サンプリングは、統計ツールです。

プロファイラの使用に関する要件

C-SPY シミュレータは、ほとんどのコアとデバイスのプロファイラ ― をサポートしています。サポートしている場合は、さらなる特定の要件はありません

ハードウェアデバッガシステムでプロファイラを使用するには、以下のいずれかが必要です。

  • I-jetまたはI-jet Traceインサーキットデバッグプローブ、J-Link、J-Trace、ST-LINKデバッグプローブ、プローブとターゲットシステム間のSWD/SWOインターフェース(Cortex-Mデバイスに基づくもの)

  • I-jet TraceインサーキットデバッグプローブおよびETMトレース機能を持つArmデバイス

  • J-TraceデバッグプローブとArm7/9またはETMトレースを備えたCortex-Mデバイス

次の表は、C-SPY ドライバのプロファイリングのサポート一覧です。

ターゲットシステム

トレース(コール)

トレース(フラット)

サンプリング

電源

C-SPY シミュレータ

あり4

あり4

CMSIS-DAP

Yes

Yes

I-jet

Yes

Yes

あり 1

あり

I-jet Trace

Yes

Yes

あり 1

Yes

J-Link

Yes

Yes

あり 1

J-Link Ultra

Yes

Yes

あり 1

あり2

J-Trace

Yes

Yes

あり 1

GDB サーバ

ST-LINK

あり 1

あり 1

TI Stellaris

TI XDS

あり 1

あり3

TI MSP-FET

Yes

表24 C-SPY ドライバのプロファイリングのサポート  


1 SWO をサポートする Cortex-M デバイスのみ。

2 SWO トレースが必要。

3 EnergyTrace(TM)オプションがある XDS110 のみ。

4 一部のコアおよびデバイスのみです。