Chuck Thacker 博士:21世纪的计算机
Chuck Thacker:人真多,非常高兴邀请我参加这次会议。我八年前访问过中国,在北京开车转了几天,中国取得的进展给我留下深刻的现象。会议方要求我做演讲时我就想21世纪的这些工程师们会对新的新毕业的工程师们说些什么呢?我一直在想这个问题,我想和大家分享一下我的想法。我这次演讲的主题是20世纪设计软件很大衣部分是为了克服硬件的缺陷,几位发言者都讲过计算机的起源是真空管,而且占地很大,用很多的电,速度很慢,根据今天的标准这简直是不值得一提的,除非为信息技术的革命奠定了基础。所以在21世纪这些限制已经不再存在了,现在我们用非常丰富的计算资源,在容量和速度方面有强有力的计算机,现在需要重新思考一下这些软件的限制。由于软件的限制使我们在20世纪没有办法建立非常强有力的硬件,我们要想一些机会,在21世纪我们能够做些什么?如果我们做的正确的话就能够给社会带来Rick所讲的进展,跟我们的生活更加相关联,不仅对工程师、科学家,跟每个人都有关系。我要提一点的是我所谈论的大部分内容主要是与个人计算和个人计算机相关的。当然今天早上我们也听到过有很多应用程序,尤其是在计算科学里的硬件依然受到硬件的制约,比如说大型的服务系统,比如说像GOOGLE和Hotmail这两家公司用的系统,这两家公司为成千上百的人提供服务,而且连接成千上百万台的机器。另外计算机的发展是通过计算应用很多科学研究领域,每个领域的科学都使用到计算机。生物、物理、化学,还有基因科学都使用计算机。如果我们没有这样一种计算的规模的话,计算基因科学的科学家就没有办法了解人类基因组的顺序,因为有了计算大量增强了这些基因研究项目的进展。现在在生物学方面新的挑战不仅仅在了解基因是什么,是怎么运作的,怎样产生蛋白,生命基础的这些生物原理,这需要更加复杂的计算。这些应用对我们来说还是有局限的。但是你和我每天使用的这些电脑来说基本上没有任何限制,比如说这些磁盘的性能,个人要关心磁盘的性能,总体而言20世纪软件开发者所面临的挑战是21世纪不再有的挑战。
这是我演讲的一个提纲。首先我们听说过摩尔定律,很多人误解了摩尔定律,他们认为摩尔定律是一种很抽象的概念,说计算会不断提高、成本低、速度快、容量大,但这并不是摩尔定律的精髓。它讲了一些非常精确的东西,会讲一下摩尔定律,另外要了解一下摩尔定律对今天做的计算会有什么样的影响,尤其是对计算机本身产生的影响。早先人们猜测说摩尔定律在今后二十几年,当然是会继续存在的,尽管我认为今后二十年会继续存在,我希望在今后几十年还会取得进展,这要靠今天在座的这些人的贡献,但是我还是有点儿怀疑在这么短的时间内能不能取得进展。作为具体的谈话内容,我会对未来软件工程师们讲一下一些错误,或者是过去软件工程出现的一些错误,还有跟大家分享一下在今后为了更快取得进展所采取的做法。
摩尔定律说首先它不是一个定律,是一种发现,英特尔公司在过去几年里做的,对任何实验科学都要进行推测,他说今后几年来说,我们预计真实世界中大多数的指数曲线是S形的,但摩尔的发现已经成立35年了。当我们看到现实世界中成倍增长的曲线之后,或者是学术界的研究、股价的上升、股价的浮动确实是成倍型的。问题是如果你看到成倍的曲线,你看不到曲线的终止,我还没有看到摩尔定律的曲线达到极致的状态。我想这种S曲线是会接近很趋缓的阶段,英特尔公司也同意这种说法。我们如何使用摩尔定律,我不是一个科学家,我是工程师,科学家是建立这个东西学习,工程师相反,是先学习再造东西。所以先了解一下我们能够做什么东西使这个社会更加美好。有好几种方式使用摩尔定律,可以降低终端的价格,降低错误,半导体行业A在视频控制台,在视频中,我们看一下终端,他们的使用寿命一般是五年,这已经是很长的了一段时间了。五年的寿命期要高于硬件的寿命期,如果你在设计一个游戏的设计台的话,要有高容量的半导体处理器来设计它,用迄今为止最好的芯片,原因是终端五年的寿命期里你希望更多的人玩游戏,游戏的开发商喜欢这些游戏,所以产品推出时必须是最好的。因为玩游戏的人不喜欢玩游戏速度降低,有更快的机器出来。所以你在五年的第一天做视频控制台是应该是当时最快的,运用摩尔定律来说,五年的寿命期应该用到极致的状态,你不能改变它的性能,只能降低它的价格。所以游戏产业的经济学原理非常有意思,在一开始是会低于成本来出售这些机器的,因为在这五年期间会赚钱或者是跟成本持平。用软件去补贴硬件,他实际上没有赚很多的钱。这是使用摩尔定律的一种方式。另外一种方式是作出做复杂的芯片,跟任何产业相比,一些大的处理器里所使用的高级芯片。摩尔定律如何应用到内存里呢?这可能是摩尔定律最能够产生影响的领域。
从70年代以来已经增长了一百多万倍,我们也听说过摩尔定律,但是在内部没有能消化和吸收,我们想这可能是比较不错的事情,就付诸实施,为这个计算机设计的内存,而没有用过以前所采用的方法,用电磁存储条,这个代价会更高一些,采用了新的英特尔公司半导体的内容,而且一共插入了两万多件的存储条,其中存储的数据是非常惊人的。整个内存占到了四个房间,体积是非常大的,可是我想这也是下一代摩尔定律在影响今后内存芯片方面的贡献。今天这个内存实际上实际有进一步的缩小了,可以把存储、处理芯片都放在一个手表当中,体积要小多了。从70年代到现在为止,使用的内存带宽也有很大的增长,每一秒中的数据也翻了一百倍,但是时延呢仅仅增长了10到20倍,这是一个非常有意思的问题。今天我可能提出这样一种想法,要解决时延的问题是一个电脑系统设计师要面临的最大的问题,这是目前我们在设计自己软件、设计自己系统时怎样进一步降低时延,这是今后讨论比较的多问题。所以对处理器的摩尔定律来讲会变得更加复杂,同时也可以在一个芯片上放置多个处理器,而且都可以与内存彼此相连,这是今天已经能够做得到的了。稍后我会进一步介绍。或者你可以做更聪明的事情,可以将几种不同的功能累加到一起,以便于在系统当中多个不同功能放在这一个芯片上。在电脑方面目前做的还不是特别多,现在我们最为感兴趣的一个是CPU的性能,另外是图象的性能,这些东西实际上都是按照不同的速率进行增长的。在图象处理器方面的完善比CPU的完善要高得多,把这两点放在同时一个芯片上的话,你会发现它的图象可能会更好,因此最好还是把这两者分开。
今后对于摩尔定律的应用有什么限制吗?像这样的一种现象通常会以某种形式面临不同的限制。这其中有许多比较类似的例子,让我们看看将来有哪种限制不能时摩尔定律在未来20年出现人们想像的情况。第一是物理的限制,这些都是实实在在的定律。对于半导体技术来讲,物理的限制,原子太大的,不能让原子变小,现在的半导体设施要采用多原子分离的方式,同时也不能够让光速进一步提高,正像在半导体业的朋友们说的那样要设计高性能的芯片,今天他们面临的问题就是让芯片的速度更快,可是个问题并不是地自己能够想象的到的。在传输时速度不够快,当你发出某一个信号时有相当大一部分要占到芯片的体积和带宽,我说的又是实现的问题了,是时延的问题,他们不知道该怎样解决,是把东西都集成到一起吗?确实如此,可是我们又知道不能把所有的东西都放在其他东西的周围。在这里就有几个因素了,而芯片本身的速度又会影响今后业绩的提高。第三个限制也是很多人越来越担忧的,那就是电力的问题。现在我们正在面对处理器空气冷却方面所需要的电力问题,我想对于那些高性能个人计算机的爱好者们他们最终要采取液体冷却的方法,这样性能更高一些。但是环境也是一个问题,能产生多少热量呢?每个电线在传输过程中都会产生热气,环境能够吸收和消化这些热量吗?我想这对许许多多的设计者来讲也是需要面临的问题,很多人会设计出处理速度非常快的处理器,但是也会产生很多热量,这是一个限制。另外是设计的复杂性,大的CPU来讲需要150到200人组成的工作团队,工作时间需要一年半到两年。你可以想象一下按一个包含亿万晶体管的芯片,这么大的功能、速度需要多少人组成一个团队呢?而且要保证这些人在一起尽可能地工作,产生尽可能少的矛盾。今天我们确实有更好的设计工具了,这比几年之前是一个进步。即便现在有很多好的工具,我们仍然面对比较大的问题,因为工作的团队本身实力也没有特别增强,他们现在做的不是简单的几何工作了,是模拟、检测等等,以便保证这些体积巨大、功能复杂的设施最终能够发挥作用。在现在的这些芯片当中我们所面临的问题与我们自己对人员组织所面临的问题一样,因为在身边会带来很多设计信息是以基因来进行编码的,可是生理的信息还没有能够很好地分解,这就是DNA。很多处理器都有自己的DNA,其中有一部分信息在20世纪时已经得到应用,当时人们都觉得这是非常好的想法,不过最终被证明没有那么好,而且也因为使用时困难重重没有再被使用了,如果要摘除这些芯片的话难度也非常大。一些业务软件依靠的可能就是这个芯片的某些特征,这样的话问题就大了。
第三个局限是人们日益感受到的,那就是经济性的问题。在72年的时候,建立了一个非常大的散热器,人们当时觉得这不是非常好的想法,你们必须要有连续的生产线能够完成整个生产,但是最后还是建了一个待工,用了五千多万美元。现在要建一个半导体的待工的话成本要到15亿美元那么多。无论按照什么标准,造价都是非常非常高德。除了一家公司以外其他的公司都不能够付得起这样高的成本,这是为什么公司会在一起组成财团共同来建立这些待工,最近有些公司将待工设在了中国,八年前我到中国来时,半导体的生产技术还处在一定的阶段。在那个时候世界的三个地区正在建设比整个体积要小十倍,今天SCM的待工刚刚开始投工,与世界上的水平接近了。在半导体的生产领域里中国在过去八年里取得了很大的进展。
还有一些我们不会看到的限制因素也会影响到今后建造希望获得的计算机,现在还有很多人没有意识到一点,但是必须要意识到,在计算机当中你使用的很多技术并不一定都要遵循摩尔定律。有的时候他们遵循的是其他的定律。像磁盘不遵守、显示器不遵守,电池也不遵守。对于笔记本电脑来讲,整个产品成本会越来越高,而现在的成本只有二分之一,如果有新的功能,并且成本本身又有一定增长的话,整个整机的价钱并不一定像摩尔定律那样有大幅度的降低,我想这会是一个非常严重的限制。电池是用简单的化学原理进行运作的,这是150年来人们都清楚的。电池无论同能量的密度还是从成本上来讲都有一定的完善,每一点能够降低10%,在过去十年当中随着移动电子的不断发展电池的发展也是非常快的,可是所有这些的发展速度都比不上半导体。最后还有带宽以及相对于延迟的问题,延迟限制了我们的速度,有一篇非常有意思的文章,建议大家也读一读,这是在上个月CACM杂志刊登的文章,最终得出的结论是在过去半导体发展的几代当中,主要的完善是在带宽方面,可是带宽方面都受到了延迟改善的制约,现在这个问题很糟糕,而且会变得越来越糟糕,因此我们必须非常努力,作为科学家和工程师们在今后几年当中能够克服延迟问题。这些可能都是一些比较过时的信息和想法。在进行设计时一定要问问自己对这些规律都有分析吗?有时工程师们想的不是很多,因此在进行设计时最好要问一问自己我将做的这些是不是与基础的发展趋势一致。我认为虚拟的内存就是一个很好的例子。在1964年的时候,人们当时没有这些想法,现在只有在计算历史上才会学到这些内容。现在虚拟内存可以降低系统的速度,主要问题是你要完全依赖于内存盘的速度,而这些都是一些设备,而且他们内存容量发展也是非常快的,它的增长速度比摩尔定律要快得多,甚至高一倍以上。不过这个盘终究是一个物体的实体,不可能让他的增长速度无限制地提高,沿着电磁轨道的增长速度也是一定的,你能做的是线性的速度来改变磁道,我们有这种内容的增长,有带宽的增长,可是延迟上并没有什么改善。这是使用虚拟内存盘的一种弱点,除此以外成本不高,也不再用虚拟内存了。现在编程的语言从语言本身可以获得保护,从存储上也可以获得保护。Windows实际上可以让你关闭到这些功能,当你在做这一点时它的速度可能会更便捷一些,经过几周之后可能会逐渐增强一下。
第二个过去软件的想法就是层次文件系统,刚才Rick讲到了这方面的内容,它是一个真实的结构,推出这个系统两个原因,一个是技术上的,可以更快地进行访问,第二是给用户一个非常形象的比喻,就是像office办公室文件柜,如果看一看Windows和office的刚开始包装超过了45000个文件,Linux涉及到的文件比这个高一倍,实际上不可能给这么过文件确立一个结构,如果按照今天的方法来使用的话就很难进行组织了。用今天的结构来组织文件结构可能会发生变化。我认为全文索引是解决这个问题的一个办法,这是为什么人们在网上建立非常大的搜索引擎,这个办法不错。
第三个过时的软件想法,可以通过测试来验证软件质量。测试是必要的,但会存在限制,比如很难找到某些类型的问题,大量的配置选项令人望而生畏。需要更多形式话的方法,需要从业人员有一定的数学知识,这对技术人员来说是不现实的。最近出现了一些新种类的方法来改进计算的可靠性,在硅谷研究院就推出了一些方法,推出了TLA+的语言,这个方法是把一种规格语言与模型检验结合起来,来测试设计的方方面面。在很长一段时间里,人们认为这种技术是不现实的。英特尔使用在网上可以拿到的工具进行测试,这种方法给他们节省了很多资金,他们认为芯片的生产有点儿像软件的生长,其实这两者之间还是有大的区别的。软件设计时要学新的语言,硬件的设计比较相似,图形设计然后进行测试,模拟测试等等,两者之间的区别你在实验场合设计硬件时,每生产一批硬件要花很多钱,就有很大的刺激让人们第一次就做好。
第四个过失的软件想法是低级编程语言,要表达的明确一些和硬件的一种折中,很大程度上编程人员不需要了解硬件的细节,因此如果一种语言能够展示出硬件的信息的话肯定就会导致一些错误、误码。比如存储会春先一些错误,因此主要是采用像Java和C#这样的编程语言,这样就不可能发生这种错误了。还有一点人们经常没有意识到的就是高层次的高级语言写出来的程序更容易为人们理解。如果写出来的码用编程语言来存储的话,很多年以后读者就很难搞清楚这些编码是什么意思了。
第五个过时的软件想法就是单线程程序,大家回想一下20世纪,一个计算机只有一台处理器,没有什么原因说明为什么要使用并线性。如果有很多CPU,有很多缓存,很大的内存系统的话,这已经是产业界非常普遍的现象了,你的程序会运行的更快一点。因为有一部分是有了不同的处理器。我们很快会对这种计算机进行编程,英特尔已经有了这样一些迹象,他们把很多芯片放在一个处理器上。人们从串行程序做到自动的并行处理,到目前为止这些研究并没有很好的结果,这个问题要比自动的工具更深一些,需要更好的语言。除此之外还需要更好的教育,本科生他们并没有学用线程进行编程,在研究生时才可以学这个课程。所以毫不奇怪人们为什么没有用它,因为人们不知道该怎么用。只有这种方法才能让我们避免目前所碰到的困境。我们还可以做其他的一些事情,可以减少对内存的访问,如果拿出一部分在这上面做很多的计算,这就像多个内存条的话就会提高速度,压缩是这方面最简单的一个方法来做这方面的平衡。
最后谈一些结论,在过去几十年当中硬件有了很大的进展,我们也充分运用了硬件的进展,但是人总会犯错误的,我们已经尽了我们最大的努力。不要把内存作为一个无限的资源,我们改进内存容量的能力作为软件工程师在添满这个容量困难得,我们认为普通的功能是使用这些技术来建立可靠的并行系统,更容易为大家作理解。一个工程师前段时间和我讲过一句话,他说一个复杂的设计比搞一个简单的设计要简单得多。Linux的编程非常好,但是是比较老的东西,我们因此进入21世纪。最后应该采用并行并发,在21世纪你们都会有这个并发,这就像20世纪时延和带宽方面的工作一样,最后感谢大家,希望你们生活当中一切顺利,我们认为今后对我们这个领域来说今后这一个世纪会和我35年前进入时一样令人兴奋,一样充满了活力,你们现在有机会影响、创造计算未来,谢谢大家。
你可以使用这个链接引用该篇文章 http://publishblog.blogchina.com/blog/tb.b?diaryID=1114971