整数平方根命令を実装したプロセッサはありましたか?
- Harris RTX 2000 Forth CPU は、多段の整数平方根命令を提供していた。
- ENIAC は、専用の除算器/平方根計算器を使って、1秒あたり最大3回の平方根演算を実行していた。
- 整数平方根を計算する最も効率的な方法は、ニュートン-ラフソン反復を使って逆平方根(1/√x)を計算し、その後で元の数に掛けることである。
- ARMv8 の
frsqrte や frsqrts のような、現代の CPU や GPU で使われる命令は、初期推定値を計算し、反復的に精度を高めるために用いられる。
- 整数平方根を計算するには、広い範囲に対応した高精度の整数乗算器が必要だが、ほとんどの CPU はそれを備えていなかった。
- 精度は重要な要素であり、プログラマが精度と速度のバランスを調整できるように、命令は分離されている。
GN⁺の見解
- 整数平方根命令は特定の応用分野で有用であり、特に 3D グラフィックス計算のような分野で重要になり得る。
- このような命令を持つプロセッサは、特殊なアルゴリズムによって高速な演算を可能にし、ソフトウェアレベルでの複雑な計算を減らせる。
- しかし、現代の多くのプロセッサはこうした命令を内蔵しておらず、代わりにソフトウェアライブラリやマイクロコードによって実装している。
- 精度と速度のバランスが重要であり、これはプログラマが状況に応じて調整できる必要がある。
- この記事はコンピュータの歴史に関心のある人にとって興味深い情報を提供しており、特に低レベルプログラミングやシステム設計に関心のある人に役立つ可能性がある。
1件のコメント
Hacker Newsのコメント
AArch64 NEONの
URSQRTE命令FRSQRTE命令は32ビット浮動小数点数に対して同様の演算を行う。単一クロックサイクル内で計算できる可能性
VAXのマイクロコード
電気機械式装置による平方根計算
整数平方根の計算方法
1 + 3 + 5 + ... + (2k + 1)の数列を使って整数平方根を求められる。ENIACに関するユーモラスな回答
平方根のおおまかな計算方法
Log2(x)を「leading zeroesの個数」に置き換えることで、おおまかな平方根を計算できる。6502マイクロプロセッサ愛好家向けの平方根アルゴリズム分析
ARM VFPの
VSQRT命令VSQRTという平方根計算命令がある。平方根の非常に大まかな計算方法