Folia
← 返回头版

逆向工程揭示Intel 8087正切算法:远超CORDIC的复杂设计

Intel 8087浮点芯片采用了一套精巧的三阶段算法来实现高精度正切运算,而非单纯依赖CORDIC方法1。通过对芯片物理层和微码的逆向分析,研究人员发现8087将CORDIC伪除法、有理多项式近似和CORDIC伪乘法三种技术相结合,其中这三个阶段的耗时占比分别约为33%、15%和47%1。

8087于1980年推出后,大幅提升了IBM PC等系统的浮点运算性能1。正切指令(FPTAN)的计算耗时约90微秒,相比基于8086处理器的软件实现的13,000微秒提速了约100倍1。值得注意的是,FPTAN指令返回的是分子分母比值(Y/X)形式,而非直接返回正切值1。

在具体实现中,8087采用16位CORDIC迭代达到约2^-16的精度,配合Padé有理多项式近似(3x/(3-x²))以实现64位精度1。FPTAN微码从地址#1039开始,由1648条16位指令组成,通常需耗费450个时钟周期执行,范围在30至540个周期之间1。芯片内部采用80位浮点数格式存储数据,包括1位符号、15位指数和64位尾数,指数偏置值为163831。CORDIC算法的设计理念源自1956年为B-58轰炸机导航计算机而开发的技术1。


评论