2012-01-15 46 views
7

私は、FPGA上に実装されている可能性が高い効率的な平方根アルゴリズムのための情報を少し見つけようとしています。すでに多くのアルゴリズムが見つかっていますが、IntelやAMDなどがあります。 効率的に私は彼らが本当に速いか、あまりメモリを必要としないことを意味します。平方根のハードウェア実装?

EDIT:一般的に問題は浮動小数点数であり、ハードウェアのほとんどは1サインビット、8ビットのバイアスされた指数、23ビットの仮数で表されるIEEE 754規格を実装しているため、

ありがとうございます!

+0

http://stackoverflow.com/questions/1528727/why-is-sse-scalar-sqrtx-slower-than-rsqrtx-x詳細情報があります。 –

+0

[this](http://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Binary_numeral_system_.28base_2.29)を実装してみませんか?ルックアップテーブルのようなものにはシフトや追加だけが必要で、余分なメモリは必要ありません。 FPGAの候補のように見えます。 –

+0

コメントありがとう@Alex。私はまだVHDLに実装することができないので、もう少しリソースを見つけようとします。もう1つの質問は、sqrtの整数部分だけを見つけるのではないのですか? –

答えて

5

完全な解決策ではなく、いくつかのポインタ。

あなたは浮動小数点で作業していると仮定しているので、浮動小数点は仮数と指数として格納されています。平方根の指数は、対数のおかげで元の指数の約半分になります。

次に、仮数をルックアップテーブルで近似することができます。次に、ニュートンraphsonラウンドを使用してLUTの結果にある程度の精度を与えることができます。

私は約8年間このようなものを実装していませんが、これは私がやったやり方であり、3〜4サイクルで結果を得ることができたと思います。

+0

ありがとうPaul!特定のアルゴリズムを教えていただけますか?うん、私は浮動小数点で働いていて、ちょうど私の質問を編集しました...あるいは、あなたが少しでもあなたの説明を拡張することができます: –

+0

残念ながら私は正確なことを覚えていない詳細、それは以前の雇用者のためであったので、私はそれを探すこともできません。あなたが特定の質問をしているなら、私はそれらに答えるために最善を尽くします。 –

+0

ありがとう@Paul。私はあなたの質問に最善の答えを記しました。それは私にいくつかのアイデアを与えてくれました。ありがとう –

2

これは、高速逆引きのルートにとっては素晴らしい方法です。
hereをご覧ください。それはかなり当初の推測については、かなり驚くべき文書であることに注意してください:)

+0

ありがとう!私はすでにそれを見てきましたが、かなりimpresiveに見えますが、 "マジックナンバー"は私を少し怖がっていました。私はもう一度見てみましょう:) –

+0

私はこの答えが本当に質問に関連しているとは思わない。このアルゴリズムは、平方根の逆数の大まかな近似しか計算せず、FPGAでは実装されていません。 –

+0

ありがとうございました。 FPGA上のほとんどの実装は、Newton-Raphson法でいくつかの変形を使用していますか?いくつかの逆転のように、それ自体は高価な操作ですか? –

関連する問題