Main Content

cgsl_0413: コンポーネント展開用のコンポーネントの状態と出力でのメモリの再利用

ID: タイトルcgsl_0413: コンポーネント展開用のコンポーネントの状態と出力でのメモリの再利用
説明

状態と出力のデータにメモリを再利用することでコンポーネントのメモリ使用量を最適化するには、次のいずれかの方法を使用します。

A関数ループバック パターンを使用して状態変数を信号としてモデル化します。
BDelay ブロックを使用して状態変数を明示的にモデル化します。Delay ブロックと関数出力端子の状態を同じリテラルの初期条件値に設定します。
メモ

これらの方法では永続的なメモリにアクセスできるため、このアプローチは [Outside Execution][Direct Access] のデータ通信方法に適用されます。

方法 B の場合、コード ジェネレーターによるメモリ使用量の最適化はベスト エフォートになります。パラメーターではなく信号を使用して動的に初期化が行われる場合など、状況によってはコード ジェネレーターで最適化が適用されないことがあります。最適化が行われない場合は、方法 A の使用を検討してください。A と B のいずれのアプローチを使用するかに関係なく、関数の同時実行によるデータ アクセスのロバストな処理がコード ジェネレーターで実装されます。

根拠

A

状態と出力のデータへのメモリの再利用。

動的初期化でも最適化を実施。​

B

状態と出力のデータへのメモリの再利用。

モデル アドバイザー チェックこのガイドラインについてのモデル アドバイザー チェックは提供されていません。

Example model

この例では、データ通信方法を [Direct Access] に設定します。

void CD_accumulator(void)
{
   int32_T i;
   for (i=0; i<10; i++) {
     Out[i] += In[i];
   }
}  

この例では、データ通信方法を [Outside Execution] に設定します。

void CD_accumulator(void)
{
   real_T tmpIrvRead[10];
   int32_T i;
   tmp = set_CD_accumulator_her_out_y();
   for (i=0; i<10; i++) {
     tmp[i] = (get_CD_accumulator_DataTransfer(tmpIrvRead))[i] + tmp[i];
   }
}

バージョン履歴

すべて展開する

R2022b で導入