Main Content

生成されたコードのパフォーマンス評価

生成されたコードの特性と RAM/ROM データが、どのように RAM/ROM メトリクスに影響するかについて説明します。

モデル例とこのシリーズの他の例の詳細については、C コード生成のためのコントロール アルゴリズム モデルの準備を参照してください。

コードの評価

生成したコードは、"実行速度" と "メモリ使用量" という 2 つのメトリクスに基づいて評価できます。場合によって、あるメトリクスを改善した結果、他のメトリクスが犠牲になることがあります。たとえば、メモリをより多く消費すると、実行速度が向上することはよくあります。

メモリ使用は ROM (読み取り専用メモリ) と RAM (ランダム アクセス メモリ) に分類できます。

  • RAM のデータへのアクセスは、ROM のデータへのアクセスよりも高速です。

  • 実行可能ファイルとデータは ROM に格納しなければなりません。なぜなら、電源のオン/オフで RAM のデータは失われるからです。

この例では、メモリ要件を評価し、メモリ使用を関数部分とデータ部分に分割します。この例では、実行速度は評価しません。

コンパイラ情報

この評価では、Freescale™ CodeWarrior® コンパイラを使用します。

  • コンパイラ: Freescale™ CodeWarrior®

  • Version: 5.5.1.1430

  • ターゲット プロセッサ: Power PC 565

コード メトリクスの表示

Simulink 環境外での統合コードの作成および生成コードのテストに述べるように、生成されたコードにはユーティリティ関数の使用が必要になることがあります。ユーティリティ関数により、1 回限りの固定的なメモリ コストが生じます。この固定的オーバーヘッドにより、この例のデータには、次のメモリ使用が示されます。

  • アルゴリズム: Simulink® ブロック線図から生成された C コードとデータ定義関数

  • ユーティリティ: Simulink® Coder™ ライブラリ ソースの一部である関数

  • 完全: アルゴリズムとユーティリティの合計

ビルド オプションのコンフィギュレーション

この例の 3 つの評価は、同じビルド構成を使用しています。Freescale™ CodeWarrior® は、メモリ使用量を最小限に抑え、使用可能なすべての最適化を適用するように構成しました。

コンフィギュレーション 1: データ型が double の再利用可能な関数

  • ソース ファイル: PCG_Eval_File_1.zip

  • データ型: すべて double

  • インクルードしたデータ: プロジェクトには、ビルドが必要とするすべてのデータ (extern: pos_rqstfbk_1fbk_2 として宣言されたデータを含む) が含まれます。

  • メイン関数: Simulink 環境外での統合コードの作成からの example_main の変更済みバージョン

  • 関数呼び出し方法: PI コントローラー用の再利用可能な関数

メモリ使用量

            Function    Data
Algorithms  1172 bytes  549 bytes
Utilities   592 bytes   40 bytes
Full        1764 bytes  589 bytes

コンフィギュレーション 2: データ型 single の再利用可能な関数

この構成では、モデル データは、倍精度ではなく単精度浮動小数点データ型を使用します。

モデル コンフィギュレーション

  • ソース ファイル: PCG_Eval_File_2.zip

  • データ型: すべて単精度

  • インクルードしたデータ: プロジェクトには、ビルドが必要とするすべてのデータ (extern: pos_rqstfbk_1fbk_2 として宣言されたデータを含む) が含まれます。

  • メイン関数: Simulink 環境外での統合コードの作成からの example_main の変更済みバージョン

  • 関数呼び出し方法: PI コントローラー用の再利用可能な関数

メモリ使用量

            Function    Data
Algorithms  800 bytes   308 bytes
Utilities   592 bytes   40 bytes
Full        1392 bytes  348 bytes

この構成は、最初の構成と比べて、わずか 56% のデータ メモリしか使用しません。つまり、データ メモリは 549 バイトから 308 バイトに減少しました。また、この構成では関数メモリ使用量も 68% です。1172 バイトから 800 バイトに減少しました。このシステムでは、倍精度の代わりに単精度を使用しても、制御アルゴリズムの精度に影響しないため、この構成を使用してコードを効率化できます。

コンフィギュレーション 3: データ型 single の再利用不可能な関数

  • ソース ファイル: PCG_Eval_File_3.zip

  • データ型: すべて単精度

  • インクルードしたデータ: プロジェクトには、ビルドが必要とするすべてのデータ (extern: pos_rqstfbk_1fbk_2 として宣言されたデータを含む) が含まれます。

  • メイン関数: Simulink 環境外での統合コードの作成からの example_main の変更済みバージョン

  • 関数呼び出し方法: 関数インターフェイスは void void であるため、グローバル変数においてデータ交換が行われます。

メモリ使用量

            Function    Data
Algorithms  948 bytes   348 bytes
Utilities   592 bytes   40 bytes
Full        1540 bytes  388 bytes

この構成は前の構成と比べて、データ メモリと関数メモリを多く消費します。

関連するトピック