web-dev-qa-db-ja.com

べき乗ハードウェアが実装されていないのはなぜですか?

多くの言語に演算子が組み込まれているのに、ハードウェアにべき乗演算がないのはなぜですか?

それは、ハードウェアの実装でさえソフトウェアと同じアルゴリズムを使用する必要があるため(つまり、ハードウェアの実装が大幅に効率的になることはない)、それがめったに使用されないため、または別の理由ですか?

5
user1358

整数の場合、ハードウェアに通常存在する指数演算は、シフト<<および>>(C用語では)のみであり、指数の2乗を掛けます。整数を使用する他のすべての場合、ビットが不足しているため、物事を表すのが速すぎて役に立たない。その問題を解決するまでに、メモリ管理やその他の高価なものにも対処しなければならなかったので、特別なハードウェアサポートがない方がよいでしょう。

浮動小数点ハードウェアについてはよくわかりませんが、合理的な数値範囲があるため、ハードウェアのべき乗の方が理にかなっています。 (私のgoogle-fuは、これを可能にするために誰かがハードウェアレイアウトを販売しているように見えることを示しています...)

5
Donal Fellows

一部のマシン(特にマイクロコントローラー)には、拡張精度(512ビット以上)の乗算を加速するハードウェアが含まれており、そのようなハードウェアは本質的に指数演算にも役立ちます(RSA暗号などに役立ちます)。このようなハードウェアがある場合とない場合のパフォーマンスは、構成要素の乗算を実行するのに必要な時間によって支配されるため、正確なべき乗を促進するためのハードウェア(乗算の促進を除く)はまれです。

正確な結果が必要ない場合は、基数の対数を計算し、それに指数を掛けて、eをその累乗にすることにより、浮動小数点数を任意の累乗にすることができます。多くの浮動小数点ユニットには、これら3つのステップすべてを促進するためのハードウェアが含まれています。

1
supercat