Reverse-engineering the Intel 8087's tangent algorithm: more than CORDIC
9 hours ago
- Intel 的 8087 浮点芯片(1980 年)大幅加速了 IBM PC 的浮点运算,正切计算只需 90 µs,而在 8086 上则需 13,000 µs。
- 8087 的 FPTAN 指令使用混合算法:CORDIC(坐标旋转数字计算机)用于 16 位精度,然后采用 Padé 有理多项式近似(3x/(3-x²))处理剩余的小角度,以实现 64 位精度。
- 该算法有三个阶段:伪除法确定要应用哪些特殊的 CORDIC 角,对剩余角度进行有理近似,以及伪乘法按相反顺序应用旋转,以最小化舍入误差。
- 8087 返回部分正切值(X 和 Y 坐标),而不是执行除法,从而优化速度并允许程序员灵活使用。
- 关键硬件包括 64 位数据通路、带有 CORDIC 角度的常量 ROM、移位器、加法器,以及用于存储旋转决策位的 16 位移位寄存器。