浮点软盘

2020-07-14 23:35:45

在度过了我生命中最后一周的时间后-这有点像把一罐泡菜塞进钱夹-我写这封信是为了向X87致敬,X87是一款80位的ISA,已经挂在英特尔的脖子上大约40年了,很快就会像软盘一样消失。

如果您查找x86汇编指令列表,会发现早期的助记符以字母F:、FABS、FADD、FDIV开头(是的,就是那个FDIV)。这些是专用的x87浮点指令-最初设计为在专用硬件单元(8087)上运行,这是一种高科技的标量侧车,需要CPU对其结果进行FWAIT。在这张清单上,你会发现直到今天,你在其他任何地方都找不到的说明。完整地表示了三角形的精确三连体:FSIN、FCOS、FPTAN。您会发现F2XM1,它的计算速度很快\((2x-1)\)--一种贫民的融合乘加运算,比它的时代提前了大约25年。甚至还有FYL2XP1,用于所有需要计算\(y\log2(x+1)\)的场合。

如今,这些类型的函数被委托给标准数学库,解放了微代码编写者,让他们可以回到LSR的基础上(加载、存储和运算)。但在图形时代之前,有一段短暂的时间,硬件设计者认为个人计算机将用于计算东西,当时正弦、余弦和部分反正切被认为值得专门的硬件支持-而且不是像今天的GPU中那样只有32位的浮点精度,甚至不是64位,大到足以粗略地表示一个Googol-而是具有大量的80位堆栈寄存器,64位的纯尾数,以及足够的指数来将爱丁顿数提高到50次方。

19位小数位浮点精度-在整数达到6万5千左右的日子里是这样的。X87有一种甜蜜的纯真。威廉·卡汉(William Kahan)以补偿总和闻名,他起草了第一个IEEE浮点标准,并协助英特尔开发了第一个协处理器。他在谈到80位寄存器时是这样说的:

目前,10字节的扩展格式是超精确算术的价值和实现它以快速运行的代价之间的一种可以容忍的折衷;很快,另外两个字节的精度将变得可以容忍,并最终成为16字节格式的…。

最终是16字节格式。哈!如果古人能见证我们的放荡就好了。顺便说一句,所有这些都发生在GIF发明之前。

纯科学作为一种市场力量,已经让位于深度学习-与其前身相比,深度学习需要更多的数据,而精确度更低。繁重的计算已经转移到显卡上。如果要效仿苹果最近的做法,桌面处理正在向ARM过渡。业界得意洋洋地宣布不是16字节的浮点数,而是16位的浮点数。卡汉教授最后一次被人看到是咆哮着谈论基准。80位几乎要死了。因此,X87曾经是数字工程的典范,也是即将到来的重要数字的预兆,很快就会入住到ENIAC、PDP-10、Difference Engine和Fortran 66旁边的套间里,在过去计算的回声和嗡嗡声的走廊里。

您正在阅读evanmiler.org,这是一个数学、技术和思考的随机集合。如果你喜欢这个,你可能也会喜欢:

想要在MySQL、PostgreSQL或SQLite数据库中查找统计模式吗?我的桌面统计软件向导可以帮助您在更短的时间内分析更多数据,并直观地交流发现,而无需花费数天时间为毫无意义的命令语法而苦苦挣扎。快看啊!