IEEE 754之前的浮点算法
在下面的评论中我的帖子是关于半精确算术的,“Raj C”询问IEEE标准754浮点运算的参数是如何选择的。我回答说我不知道,但会努力找出答案。我打电话给加州大学伯克利分校的名誉教授W. (Velvel) Kahan,他是754的主要建筑师。以下是我学到的。
内容
动物园
首先,一些背景。乔治·福赛斯,迈克·马尔科姆和我写了1977年出版的教科书从浮点运算那一章开始。本章包括下列各种计算机的浮点参数表。我身边只有一本原版书,上面有一些手写的修改,所以我扫描了一下希腊译本的表格。
那是在个人电脑和IEEE 754之前。这是一个真正的动物园。有二进制的,有十进制的,甚至还有俄罗斯的三元机器。有各种各样的单词长度。在二进制机器中,有以2为基数、以8为基数和以16为基数的标准化。
IEEE 754
大约在1976年,英特尔开始开发8086微处理器,这将成为第一批IBM个人电脑的CPU芯片。约翰·帕尔默(他曾是我在新墨西哥州的一个学生)负责设计8087浮点协处理器.他建议卡汗成为一名顾问。帕尔默和卡汉说服英特尔采取前所未有的步骤,将他们的设计公开,这样它就可以成为全行业的标准。因特尔规范成为IEEE 754的基础。
我在这个博客上写了一个关于754的两部分系列浮点和denormals.
卡亨的参数
Kahan告诉我,他为8087和754标准选择了设计参数。他说,他当时考虑了行业惯例,因为他希望现有的软件能以最小的困难移植到新处理器上。32位和64位的字长是由x86设计决定的。有两个架构接近他的愿景,IBM 360/370和DEC PDP-11/VAX。
动物园里就剩下这两个人了。这是浮点基数β指数和分数长度。
单,双,实验,实验
IBM 360 16 7 24 11 52
Dec VAX f 2 8 23 Dec VAX d 2 8 55 Dec VAX g 2 11 52
Ieee 754 2 8 23 11 52
没有人对IBM的16进制标准化感到满意。Argonne的Jim Cody称之为“摆动精度”。DEC VAX有两种双精度格式。D格式具有与单精度相同的窄指数范围。这是不幸的。我记得,DEC的G格式在指数中增加了3位,可能是受到了IEEE委员会正在进行的讨论的影响。
单个的VAX F格式和双格式的G格式具有与Palmer/Kahan提议相同的位长,但指数偏差是不同的,因此结果最大浮点数和最小正浮点数相差四倍DEC曾游说该标准的这一部分具有一定的灵活性,但最终他们不得不满足于不完全符合标准。
回顾
40年后回顾,IEEE 754是一项了不起的成就。今天,每个人都感激地接受它。动物园已经被消灭了。只是最近引入的第二种半精确格式才让我们再次思考这些问题。
谢谢你的关心,拉杰。
评论
要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。