ルックアップ テーブルの最適化
関数ルックアップ テーブルは、有限個の点 (X, Y) がある表で関数を近似する方法です。ルックアップ テーブルの X の値はブレークポイントと呼ばれます。ある点の理想関数の値は、その点に最も近い 2 つのブレークポイント間を内挿することにより近似されます。テーブル ルックアップと単純な推定は数学関数評価ほど時間がかからないため、モデルのシミュレーション時はルックアップ テーブル ブロックを使用した方が速度が上がる可能性があります。
モデル内のルックアップ テーブルを最適化するには、次を実行します。
等間隔ではないルックアップ テーブルを制限する。
不等間隔のブレークポイントでは、ブレークポイントと入力の位置を関連付けるために、二分探索法のような汎用アルゴリズムが必要です。この追加の計算により、ROM と実行時間が増大します。
等間隔のルックアップ テーブルが不等間隔として処理されるのを回避する。
等間隔のルックアップ テーブルでは位置検索がはるかに高速に行われます。また、内挿ではシンプルな除算が必要になります。
ルックアップ テーブルを固定小数点に変換すると、量子化誤差が発生する場合があります。浮動小数点で等間隔のルックアップ テーブルが、生成された固定小数点コードでは不等間隔になることがあります。関数
fixpt_evenspace_cleanup
を使用してデータを等間隔のルックアップ テーブルにもう一度変換します。ルックアップ テーブルで 2 のべき乗間隔のブレークポイントを使用する。
2 のべき乗間隔のルックアップ テーブルではビット シフトが位置検索に、ビット マスクが内挿に置き換えられ、ターゲット言語とハードウェアに関係なく、この構成が最も効率的に作成されます。
次の表は、ルックアップ テーブルのブレークポイントの間隔による影響をまとめています。
パラメーター | 2 のべき乗の等間隔データ | 等間隔のデータ | 不等間隔のデータ |
---|---|---|---|
実行速度 | 実行速度は最速です。位置検索と内挿は等間隔データの場合と同じです。ただし、速度を上げるために、ビット シフトが位置検索に、ビット マスクが内挿に置き換えられます。 | 実行速度は、位置検索が高速で内挿にはシンプルな除算が必要なため、不等間隔データの場合よりも速くなります。 | 実行速度は、位置検索が遅く内挿には多くの演算が必要なため、最も遅くなります。 |
エラー | 一様でない曲率を使用する関数の近似には同じ精度を実現するために多くの点が必要になるので、不等間隔データの場合よりも誤差は大きくなります。 | 一様でない曲率を使用する関数の近似には同じ精度を実現するために多くの点が必要になるので、不等間隔データの場合よりも誤差は大きくなります。 | 一様でない曲率を使用する関数の近似には同じ精度を実現するため少ない点で済むので、誤差は小さくなります。 |
ROM の使用量 | コマンドの ROM 使用量は減りますが、データの ROM 使用量は増えます。 | コマンドの ROM 使用量は減りますが、データの ROM 使用量は増えます。 | コマンドの ROM 使用量は増えますが、データの ROM 使用量は減ります。 |
RAM の使用量 | わずかです。 | わずかです。 | わずかです。 |
モデル アドバイザー問題のある固定小数点演算を特定チェックを使用して、効率性を向上させる余地のあるルックアップ テーブル ブロックを特定します。