计算机的运算是通过CPU进行的。最基本的运算是算术运算,即,-,*,/。参与算术的值和理论数学中是不同的,因为“一尺之棰,日取其半,永世不竭”。在计算机内部表示的只能是精确数字,所以无限小数是不可能表达的。这是第一个观点:计算机的数值,与人接触的数值有所不同。
第二个观点:计算机的运算实现,与人不同。计算机内部是通过电路的通断开业控制两种状态,以至表达二进制数;而人表达的是十进制数。
所以,这就决定了计算机,可以直接用加法器来完成整数(其实是非负整数)的算术运算,进一步加一个符号位(不管是原码还是补码)来表示负整数的运算,所以,即使是最早的CPU8088/8086,也支持这种类型的运算。但加法器不能处理浮点数据的运算,简单的说就是有小数点的数值。对这种数据,首先得有一种好的浮点数表示法。最终采用的是:尾数、阶数符号位各占一位,然后再对其余数位尾数、阶数的有效数位合理分配。也就是说,采用的是二进制的科学计数法。
在运算时,远远要比整类型的数值运算复杂,因为不仅尾数要参与运算,阶数也要参与,并且需要对尾数和阶数的符号位都进行处理,所以,开始的CPU并没有能力进行浮点运算(8088/8086,80286,80386SX),需要浮点运算时,由CPU通过软件模拟来实现,所以,进行浮点运算时就会慢很多。
为提高计算机性能,Intel公司为80386SX CPU设计了浮点运算协处理器80387,配合使用就提高了运算速度(80486SX配套的是80487)。同期,Intel公司也生产了集成了协处理器的CPU:80386DX、80486DX。到了奔腾时代,生产厂商把协处理全部集成在CPU内部,成为不可缺少的部分,这样就不在有带/不带协处理器的CPU一说了。但整类型数值运算是由加法器完成的,小数类型是由集成在CPU内部的数学协处理器完成的。现在,所有数值运算都是由协处理器完成的,哪怕没有分离出来。
继1979年度图灵奖首次授予一位加拿大学者K.E.Iverson之后, 1989年度的图灵奖又一次授予加拿大学者威廉·凯亨(William M.Kahan)。
1933年6月,凯亨生于多伦多。完成中学学 业以后,凯亨进入著名的多伦多大学。在那里,他实现了“三级 跳”——继1954年取得数学学士学位以后,1956年和1958年又先后 获得硕士学位和博士学位。学成以后,凯亨既在母校和加州大 学伯克利分校从事过教学和研究,又在Intel、NS、IBM、HP、Apple等 著名的计算机元器件公司和整机制造厂家工作过。这些经历使 他积累了丰富的工程实践经验,并为计算机科学技术,尤其是 在计算机运算技术的发展方面做出了重要贡献。
大家知道,计算机中的“数”有“定点数” 和“浮点数”之分,“定点数”的运算部件的设计和实现比较容易, 而“浮点数”的运算部件的设计和实现却复杂得多,困难得多。 因此,较早的计算机许多都不配备浮点运算,而是采用IBM的巴 科斯(J.Backus,1999年度图灵奖获得者)发明的软件,由定点运算部 件去完成浮点运算。但这种做法使浮点运算的速度大大降低, 难以满足某些应用的需要。正是凯亨,在Intel工作期间,主持设计 与开发了8087芯片,成功地实现了高速、高效的浮点运算部件。目 前,以80×86为CPU的计算机,若需完成科学与工程计算方面的课 题,必须同时配置8087这种数学协处理器。一些著名的数学软件 包,如Mathematica,也必须在配有8087数学协处理器的机器上才能 运行。由于有这样的背景,凯亨受命主持制定了二进制的、与基 数无关的浮点运算标准,即IEEE754标准和IEEE854标准。这两个标 准至今仍为绝大多数的计算机厂商所遵守。
除了以上主要贡献外,凯亨在科学、工 程、财会计算的数值算法的设计、误差分析、验证与自动诊断方 面也有卓越的贡献,他是该领域中世界公认的权威,曾发表过 许多有价值的论文。尤其是在矩阵计算方面,凯亨有极高的学 术造诣。
作为一名数学家,凯亨在教学与研究工 作中素以作风严密、严谨、严格著称。但为此,他也付出了一定 的代价。在本文,值得提一下这样一个小插曲,即凯亨获得图灵 奖以后,引发了一场争议和争论。这在图灵奖的历史上是唯一 的一次。事情是这样的:ACM于1990年1月宣布凯亨因在浮点运算 标准的制定上的贡献而获得图灵奖,并在1990年2月于华盛顿召 开的90CSC(计算机科学会议)上正式向凯亨颁奖。这之后,ACM 收到了一名读者对凯亨获奖表示异议的信。按照“言论自由”的 原则,ACM把这封信不加评论地发表在《ACM通讯》7月份的 “ACM论坛”(ACMForum)这一专栏中。
这名读者提出异议的理由主要有两条: 一是凭“制定标准”就获奖,条件不足。但对这一点,该读者大概 也觉得并不理直气壮,因而并未发挥,匆匆带过。重点在第二条, 即凯亨在伯克利大学对学生不公正。不公正表现在哪里呢?该 读者说,伯克利大学的大学生绝大多数课程都能取得高分,只 有凯亨教授上的数据结构和程序设计课例外,这是其一。其二 是该读者自己和其他5~6名同学在进入伯克利的研究生院的 初试中,6门笔试课中的5门都顺利通过,只有凯亨教授主持的 数值分析课的考试通不过,不得不重考。而他之所以未能通过, 是因为他认为解题的步数比运算结果的精度更加重要,凯亨教 授不同意他的这种观点。这封读者来信发表以后,10月份出版 的《ACM通讯》上,在“ACM论坛”中发表了另一名读者表示不同 意见的来信。这名读者认为,上述读者介绍的情况,恰恰说明凯 亨教授对学生高标准、严要求,是值得称道的;而解题步数同运 算结果精度相比何者更重要,显然正确的一方是凯亨教授。因 此这名读者表示,在看了上述读者的信之后,他只是更加增加 了对凯亨教授的敬意,而不是相反。争论至此结束。在这个过程 中,图灵奖的评奖委员会和凯亨教授本人都没有出来说任何 话。这一小插曲也许对我国教育界和学术界有所启示。
凯亨目前仍在伯克利计算机科学系任 教授。