メモリ使用量
生成コードによる RAM、ROM およびスタック領域の使用の最適化
コード ジェネレーターが変数をローカルとグローバルのどちらで定義するのかおよびサブシステム関数へのデータの受け渡し方法を指定することにより、メモリ消費量を制御します。コンフィギュレーション設定を変更してデータを保存するメモリの量を削減します。
コード ジェネレーターでは、制御フロー構造を結合し、デッド コード パスおよび計算結果に影響しないブロックのコードを削除して ROM の消費を低減します。初期化コード、関数 reset と関数 disable、防御的なコードなど、必要のないコードを削除して ROM の消費をさらに低減できます。
トピック
ローカルまたはグローバルでの変数の定義
- スタック領域の割り当てのカスタマイズ
スタックの最大許容サイズを制御し、生成されたコードでデータをローカルとグローバルのどちらで定義するのかに関する一部の制御を提供します。 - Reduce Memory Usage for Signals
Enable parameters that provide the capability to reuse memory allocated for signals. - 生成されたコードにおけるローカル ブロック出力の有効化と再利用
可能な場合、コード ジェネレーターは、ブロック出力をローカル変数として宣言し、これらの変数を再利用できるようにします。 - 生成コードでのグローバル ブロック出力の再利用
コード ジェネレーターはグローバル変数を再利用しようとします。 - グローバル変数の使用の最適化
メモリ使用量および実行速度の要件を満たすためのグローバル変数参照の最適化を選択する。 - Optimize Generated Code by Passing Reusable Subsystem Outputs as Individual Arguments
The code generator eliminates data copies from local variables back to global block I/O structures by passing reusable subsystem outputs as individual arguments instead of as a pointer to a structure stored in global memory. - Reduce Global Variables in Nonreusable Subsystem Functions
To reduce global RAM for a nonreusable subsystem, generate a function interface that passes data through arguments instead of global variables.
コード サイズの削減
- Remove Zero Initialization Code
Control whether to initialize internal data (blocks states and block outputs) and external data (root inports and outports whose value is zero) in the generated code. - Remove Reset and Disable Functions from the Generated Code
Remove unreachable (dead-code) instances of the reset and disable functions from the generated code for ERT-based systems that include model referencing hierarchies. - インライン不変信号
生成されたコード内でシンボリック名ではなく不変信号の数値を使用します。 - ブロック パラメーターの数値のインライン化
ブロック パラメーターのリテラル数値をインライン化し、グローバル RAM 使用量を軽減します。 - Optimize Generated Code by Consolidating Redundant If-Else Statements
The code generator optimizes the generated code by combiningif-else
statements that share the same condition. - 生成されたコードからのデッド コード パスの除去
コード ジェネレーターはデッド (つまり、未使用) コード パスを生成されたコードから除去します。 - 計算結果に影響しないブロックのコードの削除
コード ジェネレーターは、計算結果に影響しないコードを削除することで、実行速度を改善して ROM の消費を低減します。 - 複数の for 構造の組み合わせによる生成コードの最適化
コード ジェネレーターはデータの依存関係の解析を使用して、for
構造を組み合わせて静的なコード サイズとランタイム分岐を削減します。
データを保存するメモリ量の削減
- Reuse Buffers of Different Sizes and Dimensions
Reuse buffers for matrices that have different sizes and shapes. - boolean 変数およびステート コンフィギュレーション変数に関するメモリ使用量の削減
ステート コンフィギュレーション変数とBoolean
変数を保存するメモリ量を削減します。 - 時間カウンターのメモリ使用量の最適化
コード ジェネレーターが経過時間または絶対時間に割り当てるメモリを最適化します。 - 論理信号の boolean データを使用した生成コードの最適化
コード ジェネレーターは、論理信号をBoolean
データ型として保存し、生成されたコードを最適化します。 - Optimize Generated Code by Packing Boolean Data into Bitfields
The code generator reduces RAM consumption by packing boolean data into 1-bit bitfields. - ベクトル演算の最適化
コード ジェネレーターは、一時ローカル配列をローカル変数に置き換えることで、スタック メモリを削減します。 - 組み込みアプリケーションの単精度データ型の指定
たとえば、単精度プロセッサをターゲットとするなど、浮動小数点データ型が単精度のみのコードを生成します。 - ブロック パラメーターのデータ型を指定した効率的なコードの生成
さらに効率的なコードを生成するには、パラメーターのデータ型と信号のデータ型を一致させるか、パラメーターをさらにサイズが小さいデータ型で格納します。 - Control Operator Type in Generated Code
Generate code with Logical or Bitwise Operators or a combination of both operators.
スタック使用量の解析
- Stack Usage Profiling for Code Generated from Simulink Models
Determine size of stack memory that is required to run generated code.