1 ポイント 投稿者 GN⁺ 2024-04-08 | 1件のコメント | WhatsAppで共有

整数平方根命令を実装したプロセッサはありましたか?

  • Harris RTX 2000 Forth CPU は、多段の整数平方根命令を提供していた。
  • ENIAC は、専用の除算器/平方根計算器を使って、1秒あたり最大3回の平方根演算を実行していた。
  • 整数平方根を計算する最も効率的な方法は、ニュートン-ラフソン反復を使って逆平方根(1/√x)を計算し、その後で元の数に掛けることである。
  • ARMv8 の frsqrtefrsqrts のような、現代の CPU や GPU で使われる命令は、初期推定値を計算し、反復的に精度を高めるために用いられる。
  • 整数平方根を計算するには、広い範囲に対応した高精度の整数乗算器が必要だが、ほとんどの CPU はそれを備えていなかった。
  • 精度は重要な要素であり、プログラマが精度と速度のバランスを調整できるように、命令は分離されている。

GN⁺の見解

  • 整数平方根命令は特定の応用分野で有用であり、特に 3D グラフィックス計算のような分野で重要になり得る。
  • このような命令を持つプロセッサは、特殊なアルゴリズムによって高速な演算を可能にし、ソフトウェアレベルでの複雑な計算を減らせる。
  • しかし、現代の多くのプロセッサはこうした命令を内蔵しておらず、代わりにソフトウェアライブラリやマイクロコードによって実装している。
  • 精度と速度のバランスが重要であり、これはプログラマが状況に応じて調整できる必要がある。
  • この記事はコンピュータの歴史に関心のある人にとって興味深い情報を提供しており、特に低レベルプログラミングやシステム設計に関心のある人に役立つ可能性がある。

1件のコメント

 
GN⁺ 2024-04-08
Hacker Newsのコメント
  • AArch64 NEONのURSQRTE命令

    • 32ビット固定小数点整数と見なした値に対して概算の逆平方根を計算し、その値を半分にしたうえで、0から1-εの範囲に制限する。
    • FRSQRTE命令は32ビット浮動小数点数に対して同様の演算を行う。
  • 単一クロックサイクル内で計算できる可能性

    • 非常に大きなルックアップテーブルを使えば可能。
    • クロックサイクル内で通過できる直列論理ゲートの数に応じて、テーブルサイズを小さくできる。
  • VAXのマイクロコード

    • VAXが平方根計算機能を持っていたのではないかという推測。
  • 電気機械式装置による平方根計算

    • Friden SRQは電子部品を使わず、加算とシフトだけで平方根を計算する。
    • 小数点を手動で調整する必要があるため、技術的には整数演算と見なせる。
  • 整数平方根の計算方法

    • 1 + 3 + 5 + ... + (2k + 1) の数列を使って整数平方根を求められる。
  • ENIACに関するユーモラスな回答

    • 「ENIAC」という回答が面白いと言及。
  • 平方根のおおまかな計算方法

    • Log2(x) を「leading zeroesの個数」に置き換えることで、おおまかな平方根を計算できる。
  • 6502マイクロプロセッサ愛好家向けの平方根アルゴリズム分析

    • 6502マイクロプロセッサ向けの平方根アルゴリズムについて徹底した分析がある。
  • ARM VFPのVSQRT命令

    • ARM VFPにはVSQRTという平方根計算命令がある。
  • 平方根の非常に大まかな計算方法

    • leading 1の位置の半分だけ右にビットシフトして、おおまかな平方根を求められる。
    • この方法はニュートン・ラフソン反復法など、より正確な計算の初期推定値として有用。