17

メインプロセッサーにコプロセッサーを接続しています。いくつかの浮動小数点計算はコプロセッサーで行う必要がありますが、ハードウェア浮動小数点命令をサポートしておらず、エミュレーションが遅すぎます。

1 つの方法は、浮動小数点値を整数として表現できるようにメイン プロセッサにスケーリングさせ、それらをコ プロセッサに送信し、コ プロセッサが何らかの計算を実行し、返されたときにそれらの値をスケール バックすることです。ただし、最終的に数値が大きすぎたり小さすぎたりして、これらの整数の範囲外になるため、ほとんどの場合は機能しません。だから私の質問は、これを適切に行うための最速の方法は何ですか.

4

2 に答える 2

15

エミュレーションが遅すぎると言っています。浮動小数点のエミュレーションを意味していると思います。スケーリングされた整数が十分でない場合の残りの唯一の代替手段は固定小数点演算ですが、エミュレートされた浮動小数点数よりもはるかに高速ですが、正確には高速ではありません。

また、スケーリングされた整数と固定小数点演算の両方を使用すると、浮動小数点よりもダイナミックレンジが狭くなるという事実を逃れることはできません。

ただし、範囲が事前にわかっている場合は、必要な範囲に合わせて固定小数点演算の実装を調整できます。

定点についての記事はこちら。トリックの要点は、変数を分割する方法、数値の下位部分と上位部分のビット数を決定することです。

C の固定小数点の完全な実装については、こちらを参照してください。(BSDライセンス) 他にもあります

于 2013-04-09T18:45:03.700 に答える