威廉·卡亨

简介: 严密、严谨、严格、追求更进一步是威廉·凯亨的一贯作风,也是他留给英特尔在不断研发新的计算机浮点运算技术道路上的一笔精神财富
[展开]

威廉·卡亨的个人经历

威廉·卡亨 - 简介

威廉·凯亨,也译为威廉·卡亨(William Morton Kahan)1933年6月5日出生,凯亨生于多伦多。完成中学学业以后,凯亨进入著名的多伦多大学。

在那里,他实现了“三级跳”——继1954年取得数学学士学位以后,1956年和1958年又先后获得硕士学位和博士学位。

 

威廉·卡亨 - 经历

卡亨1933年6月5日生于多伦多。完成中学学业以后,卡亨进入著名的多伦多大学。在那里,他实现了“三级跳”——继1954年获得数学学士学位以后,1956年和1958年又先后获得硕士学位和博士学位。学成以后,卡亨既在大学从事过教学和科研,又在一些著名的计算机整机厂和元器件厂从事过重要的技术工作和产品开发工作。其中包括:1960—1968年在多伦多大学任教,1972—1973年在IBM公司工作,1974--1982年任HP公司顾问,1976—1983年在Intel公司工作,1983—1986年重返IBM,1986年以后在加州大学伯克利分校任教,同时在美国国家半导体公司兼职。这些经历使他积累了丰富的工程实践经验,并为计算机科学技术,尤其是在计算机运算技术的发展方面作出了重要贡献。

凯亨既在母校和加州大学伯克利分校从事过教学和研究,又在Intel、NS、IBM、HP、Apple等著名的计算机元器件公司和整机制造厂家工作过。这些经历使他积累了丰富的工程实践经验,并为计算机科学技术,尤其是在计算机运算技术的发展方面做出了重要贡献。

在英特尔供职期间,凯亨主持设计与开发了8087芯片,成功地实现了高速、高效的浮点运算部件。直到目前,以80×86为CPU的计算机,若需完成科学与工程计算方面的课题,也必须同时配置8087这种数学协处理器。同时,一些著名的数学软件包,如Mathematica,也必须在配有8087数学协处理器的机器上才能运行。由于他的突出贡献,凯亨后来又受命主持制定了二进制的、与基数无关的浮点运算标准,即IEEE754标准和IEEE854标准。而这两个标准至今仍为绝大多数的计算机厂商所遵守。也正是由于这两个标准,ACM于1990年1月宣布凯亨因在浮点运算标准的制定上的贡献而获得图灵奖。

严密、严谨、严格、追求更进一步是威廉·凯亨的一贯作风,也是他留给英特尔在不断研发新的计算机浮点运算技术道路上的一笔精神财富。

1989年的图灵奖又一次选择了一位加拿大计算机科学家,这一次是威廉·卡亨(William M.Kahan),他是因为在浮点运算部件的设计和浮点运算标准的制定上的突出贡献而获此殊荣的。

威廉·卡亨 - 浮点计算

大家知道,计算机中的“数”有“定点数”和“浮点数”之分,“定点数”的运算部件的设计与实现比较容易,而“浮点数”的运算部件的设计和实现却复杂得多,困难得多。因此,较早的计算机许多都不配备浮点运算部件。那么,需要浮点运算的时候怎么办呢历史上曾经有过两种解决办法。第一是利用浮点运算子程序在定点运算部件上实现浮点运算。最早的浮点运算子程序是由1970年图灵奖获得者威尔金森(J.H.Wilkinson)在图灵所设计的ACE计算机上实现的。第二种办法是冯·诺伊曼提出来的,即对定点数附加以“比例因子”,使之成为实际上的浮点数。这个办法固然巧妙,但比例因子的设定成了令程序员伤脑筋的事,因为有时候运算的中间结果和最后结果的范围很难确切估计,比例因子选小了,造成运算溢出;比例因子选大了,影响运算精度。后来,巴克斯(J.Backus,1977年图灵奖获得者)和他的同事海里克(H.Herrick)一起开发出了一个叫Speedcoding的软件,能根据问题自动设定和调整比例因子,成功地解决了这个问题。这两种办法都是通过软件实现浮点运算的,虽然可行,毕竟是“权宜之计”,因为前者使浮点运算的速度大大降低,后者在数的取值范围和精度两方面都有很大限制,难以满足某些应用的需要。正是卡亨,在Intel工作期间,主持设计与开发了8087芯片,成功地实现了高速、高效的浮点运算部件。目前,以80x86为CPU的计算机,若需完成科学与工程计算方面的课题,有些需配置8087这种数学协处理器(mathematical coprocessor)。一些著名的数学软件包,如Mathematica,也必须在配有8087数学协处理器的机器上才能运行。除此以外,卡亨还为HP计算机的体系结构设计作出过贡献。

由于有这样的背景,IEEE在制定浮点运算标准的时候,很自然地任命卡亨为这个课题的负责人。在卡亨的主持下,二进制浮点运算标准IEEE 754以及与基数无关的(radix-independent)浮点运算标准IEEE 854相继出台。这两个标准至今仍为绝大多数的计算机厂商所遵守。

除了以上主要贡献外,卡亨在科学、工程、财会计算的数值算法的设计、误差分析、验证与自动诊断等方面也有卓越的贡献,是该领域中世界公认的权威之一,曾发表过许多有影响的论文。尤其是在矩阵计算方面,卡亨有极高的学术造诣。

作为一名数学家,卡亨在教学与研究工作中素以作风严密、严谨、严格著称。但为此,他也付出了一定的代价。卡亨获得图灵奖以后的一个小插曲很能说明这个问题。事情是这样的:ACM于1990年1月宣布卡亨因在浮点运算标准的制定上的贡献而获得1989年度的图灵奖,并在1990年2月于华盛顿召开的,90CSC(计算机科学会议)期间正式向卡亨颁奖。这之后,ACM收到了一名读者对卡亨获奖表示异议的信。这名读者曾是斯坦福大学的学生,后来考进加州大学伯克利分校念研究生,入学考试时与卡亨教授发生过龃龉,后来在旧金山的一家软件公司工作。按照“言论自由”的原则,ACM把这封信不加评论地发表在《ACM通讯》7月份的“ACM论坛”(ACM Forum)这一专栏中。

这名读者提出异议的理由主要有两条:一是凭“制定标准”就获奖,条件不足,而且他认为IEEE浮点标准是科学与技术上的一个错误,因为它妨碍了数学算法的发展,无助于非专家的一般用户避免出错。至于这个标准至今没有遭到更广泛的批评,只是因为它与Ada、VHDL标准相比,潜在的不良后果较小而已。对上面这条理由,该读者大概也觉得并不理直气壮,因而并未发挥,匆匆带过。重点在第二条,即卡亨在伯克利大学当教授对学生不公正。不公正表现在哪里呢该读者说,伯克利大学的大学生绝大多数课程都能取得高分,只有卡亨教授上的数据结构和程序设计课例外,这是其一。其二是该读者自己和其他4—5名学生在进入伯克利研究生院的初试中,6门笔试课中的5门都顺利通过,只有卡亨教授主持的数值分析课的考试通不过,不得不重考。而他之所以未能通过,是因为他解题时注重步数少,认为这比运算结果的精度更加重要,而且他强调说他在斯坦福大学学习时,那里的物理专家和微分方程专家也都是这么看的,这么教课的。卡亨教授不同意他的这种观点,给他打了个“不及格”,让他重考。这封读者来信发表以后,10月份出版的《ACM通讯》上,在“ACM论坛”中发表了另一名读者表示不同意见的来信,这次是加拿大麦克马斯托大学(McMaster University)计算机科学系的一位老师发表看法。他认为,上述读者介绍的情况,恰恰说明卡亨教授对学生高标准,严要求,是值得称道的;而解题步数同运算结果的精度相比何者更重要,正确的一方显然是卡亨教授。因此这名读者表示,在看了上述读者的信之后,他只是更加增加了对卡亨教授的敬意,而不是相反。争论至此结束。值得我们注意的是,在这个过程中,图灵奖的评奖委员会和卡亨教授本人都没有出来就此说任何话。这一小插曲也许对我国的教育界和科技界有所启示。

卡亨目前仍在伯克利计算机科学系任教授。

威廉·卡亨

更新日期:2024-05-05