生成されたコードのパフォーマンス評価
生成されたコードの特性と 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_rqst
、fbk_1
、fbk_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_rqst
、fbk_1
、fbk_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_rqst
、fbk_1
、fbk_2
として宣言されたデータを含む) が含まれます。メイン関数: Simulink 環境外での統合コードの作成からの
example_main
の変更済みバージョン関数呼び出し方法: 関数インターフェイスは
void void
であるため、グローバル変数においてデータ交換が行われます。
メモリ使用量
Function Data Algorithms 948 bytes 348 bytes Utilities 592 bytes 40 bytes Full 1540 bytes 388 bytes
この構成は前の構成と比べて、データ メモリと関数メモリを多く消費します。