Main Content

固定小数点モデルの高速化

モデルがコード生成の制限を受けた場合、Simulink® のアクセラレーション モードを固定小数点モデルに使用できます。アクセラレーション モードは一部の固定小数点モデルを大幅に高速化します。これは非常に多くのタイム ステップを実行するモデルに特に当てはまります。固定小数点モデルのコードを生成するための時間的なオーバーヘッドは、一般にシミュレーションでモデルを設定するためのオーバーヘッドよりも大きくなります。タイム ステップの数が増えると、このオーバヘッドの相対的な重要性は低下します。

メモ

ラピッド アクセラレータ モードでは、パラメーターとしてバス オブジェクトまたは 33 ビット以上の固定データ型をもつオブジェクトはサポートされていません。

すべての Simulink モデルは、[コンフィギュレーション パラメーター] ダイアログ ボックスで開始時間と終了時間を設定します。Simulink シミュレーションは通常非リアルタイム実行に対応した設定で、Simulink ソフトウェアは指定された開始時間から終了時間まで可能な限り短時間で動作のシミュレーションを実行します。シミュレーションを終了するまでにかかる時間は 2 つの部分から構成されています。オーバーヘッド時間とコア シミュレーション時間で、あるタイム ステップから次のタイム ステップまでの変化を計算します。すべてのモデルで、終了時間と開始時間が同じであればシミュレーションにかかる時間はオーバーヘッド時間と見なされます。終了時間が増えると、シミュレーションは長くなります。この追加の時間がコア シミュレーション時間になります。アクセラレーション モードを使用してモデルのシミュレーションを実行すると、コードの生成とコンパイルに費やされる初期オーバーヘッド時間が長くなります。すべてのモデルで、シミュレーション終了時間と開始時間が十分に近い場合、ノーマル モードのシミュレーションはアクセラレーション モードよりも速くなります。ただし、モデルが構造的に変更されなかった場合、アクセラレーション モードでは後続のシミュレーションのコード生成のオーバーヘッドを解消できます。

ノーマル モードでは、Simulink ソフトウェアはさまざまな状況を処理することができる一般的なコードを実行します。アクセラレーション モードでは、現在の用途に合わせたコードが生成されます。固定小数点を使用する場合、調整されたコードはシミュレーション コードよりもはるかに短時間で実行されます。調整されたコードを使用すると、アクセラレーション モードのコア シミュレーション時間が短縮されます。すべてのモデルで、終了時間が開始時間に近づくと、オーバーヘッドがシミュレーション全体の時間に影響を与えます。終了時間が増えるにつれ、ある時点のコア シミュレーション時間がシミュレーション全体の時間に影響を与えます。新しいコード生成が必要な場合、アクセラレーション モードに比べてノーマル モードのオーバーヘッドが小さくなります。アクセラレーション モードはコア シミュレーションの部分で高速になります。どのモデルでも、新しいコード生成を伴うノーマル モードとアクセラレーション モードの終了時間がシミュレーション全体の時間と同じになることがあります。終了時間が減ると、ノーマル モードは高速になります。終了時間が増えると、アクセラレーション モードはさらに高速化します。最終的に、アクセラレーション モードは大幅に高速化されます。

ノーマル モードでは、一般に固定小数点の計算よりも浮動小数点の計算に合わせたコードを使用します。そのため、通常ノーマル モードでは浮動小数点モデルの方が同等の固定小数点モデルよりも高速になります。アクセラレーション モードの場合、状況はしばしば逆で、固定小数点の方が浮動小数点よりも大幅に速くなります。上述したように、固定小数点コードは一般的なものから高度に調整された効率的なものになります。ハードウェアによっては、整数ベースの固定小数点コードは同様の浮動小数点コードよりも高速化できます。多くのプロセッサでは、整数計算を同様の浮動小数点演算よりも短時間で行うことができます。また、データ バスが狭い場合、1、2、または 4 バイトの整数信号の方が 4 または 8 バイトの浮動小数点信号よりも高速になります。