新浪博客

反思过去,改变未来—记 Chuck Thacker的“21世纪的计算”大会演讲

2010-11-25 09:53阅读:
反思过去,改变未来—记 <wbr>Chuck <wbr>Thacker的“21世纪的计算”大会演讲
Improving the Future by Examining the Past
对计算机领域的人来说,Chuck Thacker绝对是个无人不知无人不晓的名字。他是以太局域网的发明者之一,也是世界是第一台激光打印机发明者之一。2009年,图灵奖颁给Chuck Thacker
以表彰他对第一台现代个人计算机——施乐帕克(Xerox PARCAlto的先驱性设计,以及在局域网(包括以太网)、多处理器工作站、窥探高速缓存一致性协议和平板PC等方面的杰出成就与贡献。比尔·盖茨曾毫不掩饰地表达对他的敬意并说道:“就对计算机科学的贡献而言,我想不出有谁能够抵得上Chuck Thacker。”2010年,在第12届二十一世纪计算机大会上,这位计算机大师再次与世人分享了他对计算机过去和未来的一些思考,让我们一起来听听智者的声音吧!
反思过去,改变未来—记 <wbr>Chuck <wbr>Thacker的“21世纪的计算”大会演讲很高兴今天有机会来上海与中国的大学生做交流。我在刚刚得图灵奖的时候甚为惊讶因为在过去的40年里这个神圣的奖项基本上都是颁给真正做计算机的,而不是像我这样的研究者。我读了一下之前获奖者的论文,看一下他们都在想什么。我发现他们基本上分成两类,其中一类人的职业生涯一般都一帆风顺,另外一类是为未来带来很大挑战的人。但是我不属于这两类中的任何一种,所以我想从另外一种做法讨论,我想研究一篇论文,这篇论文最近也在讨论,我希望能够找出一种谈论问题的方式,通过这样的方式帮助我们更好地理解这个问题,了解这个问题的解决方案。
我跟大家讲未来设计系统的时候是要考虑过去做的哪些决策对于现在带来哪些影响,当时做的决策在当时可能是很好的决策,可是到了今天它的重要性就不如几十年前了。我们过去做的一些选择到了今天已经不再有价值、不再有意义。如果回到过去做另外的选择,这不是说过去选错了,我想说的是我们需要仔细分析一下过去做的决策,今天我们把它们当成一些公理,除了这些公理之外还有哪些道路更为合适,我会给大家举六个例子证明我所提出的理论是有价值的。
在这之前我们先来看一下过去十年在电脑、计算机方面有什么发展,这个列表对于两个机器进行对比,第一个机器是Alto,是1972年我研究的电脑,那个时候的CPU处理能力是6兆,到2010年变成了2.8G,但是要乘以4,我电脑里面有4CPU,三个CPU大多数处于空闲状况,增长了1900倍,这个增长速度是非常快的。内存的容量由128K变成6GB,内存现在越来越成为一个瓶颈。另外显示器的象素只增长了150倍,这个问题倒不大,因为现在我们的显示屏已经超过了人类肉眼所能够承受的级别,或者人类肉眼所能够辨别的级别。现在对于显示屏可能并不是简简单单提高象素,而是通过3D,或者其他的方式为视频提供突破。另外网络速度过去是3兆,现在是1G,增长了300倍。硬盘容量是很有意思的,存取容量增长了28万倍,这对我们来说也带来了挑战。
所以我们说计算机迅速增长的动力有哪些呢?最上面首先有一个28万,就是我们所讲的磁存储器。我们可以把一辈子获得所有的信息在几张盘上面完全储存。第二是大家都没有考虑到的,我们可以对玻璃的纯度进一步的提升。如果我们在过去加上一些路由,会使这个时间增长,但是不管怎么样我想说的是带宽现在不再是稀缺的资源了,这种延迟的时间可以通过我们更好的设计进行改善。第三个动力是大家经常考虑到的是半导体和摩尔定律,往往大家对摩尔定律有着错误的观点,并没有说电脑越来越便宜,但是电脑确实变得越来越便宜了,但是也变得越来越热了。摩尔说,也许对于一个固定的晶片上面所放的半导体会越来越多,每过24个月会翻一倍,他本来预测的区间是未来几年,但是他的预测对于未来半个世纪都是有效的。
接下来看一些具体的例子,已经发明出来的一些东西,今天没有带来很大的影响力,因为技术的现实还不能够大规模地采纳这些发明
首先是虚拟内存,大家对虚拟内存这个概念都非常了解,这一台机器非常小,又非常快,有一个磁内核的内存,还有一个磁骨,我讲的这个发展是在上世纪60年代早期实现的,他们想法非常简单,把内核的内存看起来和磁骨一样大,怎么做呢?把内核分成32512磁的页(Divide core into 32 512word pages),然后映射到实际内核地址当中,同时还有一种非常初级的,他们叫做学习计划,通过学习计划决定32页当中哪一页到骨上去。这样的技术除了超级计算机以外,所有计算机都用到了。因为超级计算机不希望再增加这些内存的访问。可瑞(音译)曾经谈过真正的项目需要真正的内存,不需要虚拟内存。在你们手机当中嵌入式的系统,MP3当中嵌入式的东西也不使用虚拟内存。除了上述两样东西,所有的东西都用虚拟内存。 反思过去,改变未来—记 <wbr>Chuck <wbr>Thacker的“21世纪的计算”大会演讲第二个问题是内存的一致性。一致内存这个想法是非常重要的。比方说我的程序是写,然后另外一个程序是读。读的程序是应该提取出我写的值,而不是过去的值。只要我们在一台计算机上面,如果没有缓存跑程序,这个问题实际上是在程序和IO系统、输入、输出系统当中的问题,比如往磁盘上面写了内容,写到内存当中,然后让磁盘控制器把这个信息从内存当中提出来,而对于多处理器系统而言,我们可以使这种机理发挥作用。让这样的系统用到多处理器系统当中。一开始我们发现需要比原来协议更加复杂的协议,因为不能在总线上面像以前那样传送数据了,所有用总线连接在一起的,我们需要点到点的连接,使得这样的协议复杂。后来英特尔通过以前的数学办法去进一步改进了这种协议,消除了协议过多的复杂性。
为什么使用一致内存呢?这个问题我想了很多。实际上主要是两个可能性,首先我们要想让编程更加容易的话,对于内存有一个统一的视图的话,就更加的容易。第二个可能性,我们能够确保在很小的规模上就能够运行,而且不需要去预见在更大的规模上才有可能带进来的复杂性。其实一致内存当中跑的讯息是能够解决问题的,但是我们今天是不是能够做出这样的选择呢?因为我们看到要让一致内存的系统,特别是当中有许多处理器行得通的话确实有很大的难度,是不是今天就能做这样的选择。 反思过去,改变未来—记 <wbr>Chuck <wbr>Thacker的“21世纪的计算”大会演讲第三个例子,线程和锁,这是指并发性编程,是很难做的一项工作,哪怕是最优秀的人在做,或者是失败的,或者是付出代价才取得的一点成功。当然是指单处理器的计算机,一下子加进去两个处理器。实际上基于锁的编程到今天是非常难的,单的锁保护对所有数据访问,这是可以的,但是效率是非常低下的。如果做一个精细力度的划分,这样更有可能做好。更多时候是有不确定性的,是你无法预知的。即使有人告诉你怎么样做才对,编程员仍然碰到了很多困难,而且在许多核系统的时代,程序不是说有最好的人就能写出来,我们需要有很多的编程员,而且在我们领域当中碰到很多具体实际的挑战,所以我们需要有更多的编程员,他们是超级编程员。我说了先要正确,才能说并发性。今天前面一位讲演者说了在性能和正确性之间的取舍,我认为取舍都没有,必须要正确。一个计算机程序如果带来错误的答案,没有用,不管跑得多快都没有用,所以下一次想优化的时候,是需要正确的答案还是很快就能得到的答案,如果你选更快的得到答案,那么你错了。当然还有一些备选的方案可以想让这个工作更加好做,比方说交易内存,交易内存这一块把数据库系统的一些技术拿过来,然后把数据库的技术、数据库资产的技术,一致性隔离和耐用性拿过来,在一个交易当中所有的操作,或者是在交易的末端自制发生,或者什么都不会发生。
反思过去,改变未来—记 <wbr>Chuck <wbr>Thacker的“21世纪的计算”大会演讲
第四个例子是复杂CPU,这一块做一些历史的介绍。上世纪50年代、60年代我叫它做实验的年代,看到很多不同类型的CPU被创建出来,有一些只能用于像LispFortranAlgol这样的语言,还有对战机,出现了很多新的计算机架构。70年代、80年代架构围绕这两个趋势得到了整合,多多少少有一点像宗教运动,之间还打仗。首先由IBM斯坦福和伯克利主推的RISC架构,以CICS为架构,无论是RISC还是CICS,从对方阵营偷他们的想法。今天RISC已经没有什么区别了。所以到了90年代,我们现在对这些基本

我的更多文章

下载客户端阅读体验更佳

APP专享