`
ximencf
  • 浏览: 5250 次
  • 性别: Icon_minigender_1
  • 来自: 南京
最近访客 更多访客>>
社区版块
存档分类
最新评论

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

阅读更多

         

Improving the Future by Examining the Past

对计算机领域的人来说,Chuck Thacker绝对是个无人不知无人不晓的名字。他是以太局域网的发明者之一,也是世界是第一台激光打印机发明者之一。2009年,图灵奖颁给Chuck Thacker以表彰他对第一台现代个人计算机——施乐帕克(Xerox PARCAlto的先驱性设计,以及在局域网(包括以太网)、多处理器工作站、窥探高速缓存一致性协议和平板PC等方面的杰出成就与贡献。比尔·盖茨曾毫不掩饰地表达对他的敬意并说道:“就对计算机科学的贡献而言,我想不出有谁能够抵得上Chuck Thacker。”2010年,在第12届二十一世纪计算机大会上,这位计算机大师再次与世人分享了他对计算机过去和未来的一些思考,让我们一起来听听智者的声音吧!

很高兴今天有机会来上海与中国的大学生做交流。我在刚刚得图灵奖的时候甚为惊讶因为在过去的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当中嵌入式的东西也不使用虚拟内存。除了上述两样东西,所有的东西都用虚拟内存。 第二个问题是内存的一致性。一致内存这个想法是非常重要的。比方说我的程序是写,然后另外一个程序是读。读的程序是应该提取出我写的值,而不是过去的值。只要我们在一台计算机上面,如果没有缓存跑程序,这个问题实际上是在程序和IO系统、输入、输出系统当中的问题,比如往磁盘上面写了内容,写到内存当中,然后让磁盘控制器把这个信息从内存当中提出来,而对于多处理器系统而言,我们可以使这种机理发挥作用。让这样的系统用到多处理器系统当中。一开始我们发现需要比原来协议更加复杂的协议,因为不能在总线上面像以前那样传送数据了,所有用总线连接在一起的,我们需要点到点的连接,使得这样的协议复杂。后来英特尔通过以前的数学办法去进一步改进了这种协议,消除了协议过多的复杂性。

为什么使用一致内存呢?这个问题我想了很多。实际上主要是两个可能性,首先我们要想让编程更加容易的话,对于内存有一个统一的视图的话,就更加的容易。第二个可能性,我们能够确保在很小的规模上就能够运行,而且不需要去预见在更大的规模上才有可能带进来的复杂性。其实一致内存当中跑的讯息是能够解决问题的,但是我们今天是不是能够做出这样的选择呢?因为我们看到要让一致内存的系统,特别是当中有许多处理器行得通的话确实有很大的难度,是不是今天就能做这样的选择。第三个例子,线程和锁,这是指并发性编程,是很难做的一项工作,哪怕是最优秀的人在做,或者是失败的,或者是付出代价才取得的一点成功。当然是指单处理器的计算机,一下子加进去两个处理器。实际上基于锁的编程到今天是非常难的,单的锁保护对所有数据访问,这是可以的,但是效率是非常低下的。如果做一个精细力度的划分,这样更有可能做好。更多时候是有不确定性的,是你无法预知的。即使有人告诉你怎么样做才对,编程员仍然碰到了很多困难,而且在许多核系统的时代,程序不是说有最好的人就能写出来,我们需要有很多的编程员,而且在我们领域当中碰到很多具体实际的挑战,所以我们需要有更多的编程员,他们是超级编程员。我说了先要正确,才能说并发性。今天前面一位讲演者说了在性能和正确性之间的取舍,我认为取舍都没有,必须要正确。一个计算机程序如果带来错误的答案,没有用,不管跑得多快都没有用,所以下一次想优化的时候,是需要正确的答案还是很快就能得到的答案,如果你选更快的得到答案,那么你错了。当然还有一些备选的方案可以想让这个工作更加好做,比方说交易内存,交易内存这一块把数据库系统的一些技术拿过来,然后把数据库的技术、数据库资产的技术,一致性隔离和耐用性拿过来,在一个交易当中所有的操作,或者是在交易的末端自制发生,或者什么都不会发生。

第四个例子是复杂CPU,这一块做一些历史的介绍。上世纪50年代、60年代我叫它做实验的年代,看到很多不同类型的CPU被创建出来,有一些只能用于像LispFortranAlgol这样的语言,还有对战机,出现了很多新的计算机架构。70年代、80年代架构围绕这两个趋势得到了整合,多多少少有一点像宗教运动,之间还打仗。首先由IBM斯坦福和伯克利主推的RISC架构,以CICS为架构,无论是RISC还是CICS,从对方阵营偷他们的想法。今天RISC已经没有什么区别了。所以到了90年代,我们现在对这些基本的架构已经有明确的认识了,所以这样一来使得ILP越来越多,就是指令的实用性,就是ILP,觉得是单线程的对战,但是现在有一些聪明的人是可以找到另外一种方式可以进行更好的实施。我们也尝试了一下,发现在这个架构的团队里面有着多种的缓存可以加快你的速度。实际上就可以预测未来的价值在什么地方可以出现。这就会使得绩效有了逐渐的改善,而且也使得复杂性极大的增加,其中一个复杂性带来很大的功率、能源消耗。很多人花了好多时间,但是研究来研究去没有好的结果。对于线性程序并没有阐述出很多的ILP,所以当时很多的工作基本上白费了。

对于CPU未来的发展有几个可能的路线,在英特尔我们讲到叫单核云电脑,里面包括很多简单的核,没有内核的一致性,而且有着非常高效的英特尔核心网络。我们现在做的很多事情,现在电脑速度已经够快了,我经常拿的电脑,包括我做幻灯片的电脑,电池可以用13个小时,因为我放PPT的时候不用使用100瓦的功率。

第五个例子,很多人觉得中断对于电脑是重要的,觉得中断的系统确实能够有很好的特色,中断过去是一个很好的想法,因为中断刚刚出现的时候,当时的电脑效率非常之低,而且价格很高。如果你没有这样一种中断的系统,一旦你现在的计算突然停止了,或者说你的时间到了的话,那么你是不可能进行方便的转化的。但是这已经是过去的事了,过去的电脑价格很贵,现在电脑在同一款芯片上面,你可能只需要花一块钱,所以说把这样一种空隙留在那边,没有什么问题。今天我们开始担心这样的情况,是软件,不是硬件。硬件而言,如果这个硬件没有软件,像石头一样,没有任何的作用。作为架构师需要把编程师、程序人员的工作变得简单化,我们现在可以在没有中断的情况下面建立我们系统的,比如说1972年的一个BBN  Pluribus,这样体系就使用这样的方式,对于多任务处理的时候,可以在路由器上面进行实施。

第六个例子,可能很多人并不认同,我们管它叫做分组交换网。在过去几年我们可以看到架构以及网络的学术群体,尤其是研究机构,他们现在正在逐渐的展开合作,合作比过去进行得更多了,如果对于单个芯片里面有很多线程的话,组合起来就像网络一样。对于那些架构师却忽视了电话公司,所以需要把所有的一切进一步的合并。我们其实是有机会在整个的大型数据中心进行大的实验,但是现在做的人并不多,或者说了解的人不多,这个数据中心本身并不是英特网,甚至不是微型的英特网,可以说这边的差别是非常明显的。对于数据中心的拓扑现在是明确的,因为是我们人为的把它设定好的,各个机器的名称也是确定的,整个网络也是了解的,我们不需要这样一种新的方式进行命名,而英特网并非如此。另外整个网络也是比较少,延迟也比较短,因为数据中心可能从一个地方到另外一个地方就几百米,而且它的节点更少,大概是几万条节点,不是几亿点。

同时对于各种各样的连接也可以增加流程,现在仍然可以做到。对于英特网协议不满意的,就是它使用损失来评估拥挤,其实损失和拥挤是两回事,应该通过不同方式处理。在过去损失是可以接受的,损失可能是拥挤带来的,因为整个网络规模比较小,比较拥挤再次传输是可以实现的。对于世界上每一个设备确定一个地址,在当时并不是一个问题,因为当时的设备比较少,分配的地址也不多,但是随着网络,就像CPU一样发展得越来越快,网络也是越来越快、越来越可靠,给我们带来很多问题。随着速度越来越快,发现犯的错误越来越少,与此同时交换以及路由需要很大的内存作为缓存,可以说路由器里面包括的缓存越来越多,一般来说没有得到良好的应用,一旦有拥挤,就会出现一种延迟,制造商会说我的路由器在400纳秒就可以实现,他说得没错,如果出现拥挤整个服务就没有办法保证它的质量。为什么呢?因为在每一个交换器上面的路由都是非常复杂的,必须加一个处理器。所以你现在所购买的路由器里面其实里面包括很多的内存地也包括几千个微型的电脑。在未来,如果网络连接速度越来越快,会带来巨大的问题,因为现在没有足够的时间关注每个分包、每个分组。最后讲几点,其实前面也提到了,今天的系统和过去是完全不一样了,和过去50年完全不一样了。根据我们现在所面对的现实,我们现在可以说是既有机会,也有一种必要性。我们需要重新的考虑过去做的一些决策,可以把过去的决策以另外的方式实现,我们需要一种新的创新,对于过去的做法重新来分析一下,因为现在电脑并没有能够完成我们所需要做的所有事情,因此仍然有很多挑战。在这样的演讲中,我很难不讲到巨大的挑战,我只是把未来的挑战列了下来。第一个挑战就是电脑可以帮我开车,甚至开得比我还好,不至于说开车撞到右边,把车也撞坏了。我也希望我的电脑能够更好的了解我本人,现在的电脑就像是我的奴隶一样,对于我他们没有任何的信息不了解,我希望我的信息能够了解我的喜好,像我的同事,而不是我的奴隶。希望我的电脑能够帮助教育我的孙子,比如说电脑在教育方面起到很好的作用,它说的有道理,但不全对。

计算机所做的事情是使得这种文本变成了动画。我们想想文本处理器是什么呢?就是打字机。最开始发明列表或者图表的人,他其实是知道图表有很大的作用,今天我们仍然面临很多新的挑战,就是用电脑做那些不是那么容易自动化的事情。但是如果解决了今天的问题,未来会有新的问题出现,这些新的问题会要求有新的程序,这些新的程序也会需要有新的计算机架构,未来会有很多的挑战存在。像和学生交流的时候,我通常会说非常羡慕各位,因为各位在学习计算机的时候现在已经到了反思的时刻,现在你们可以有机会帮助我们改变未来,就像是电脑改变过去50年代那样。所以我是特别羡慕大家,也祝大家在未来一切顺利。谢谢各位!

分享到:
评论

相关推荐

    Android-Chuck一个简单的AndroidOkHttp客户端HTTP检查器

    通过集成Chuck,开发者可以查看请求头、响应头、请求体以及响应体等关键信息,从而更好地理解和优化网络调用。 ### 1. OkHttp简介 OkHttp是Square公司开发的一款高效的HTTP客户端库,广泛用于Android应用中。它的...

    A Tiny Computer for Teaching

    ### 描述知识点:Chuck Thacker,大师的语言描述比较自由简约,得心应手!匠家的话就有机器味道了! #### 1. Chuck Thacker的贡献 Chuck Thacker 是图灵奖获得者,他的贡献在于提出了一个挑战性的设计。图灵奖是...

    Android代码-chuck

    Chuck Chuck is a simple in-app HTTP inspector for Android OkHttp clients. Chuck intercepts and persists all HTTP requests and responses inside your application, and provides a UI for inspecting their ...

    chuck, ChucK音乐编程语言.zip

    chuck, ChucK音乐编程语言 强定时,并发和On-the-fly音乐编程语言欢迎使用卡盘 !它是什么ChucK是一种用于实时声音合成和音乐创作的编程语言。 它是开放源码的,可以在 macOS X 。Windows 和Linux上免费提供。 ChucK...

    Hadoop实战中文版 chuck lam

    《Hadoop实战》是由Chuck Lam编著的一本专注于大数据处理技术的中文书籍,它深入浅出地介绍了Hadoop生态系统的核心组件及其在实际项目中的应用。Hadoop作为大数据处理的基石,其分布式存储系统HDFS(Hadoop ...

    chuck-bigjs:解决js计算丢失精确度的bug

    chuck-bigjs 解决了js计算丢失精度的问题,稍微修改了big.js实现了连加,连减,连乘,连除。其他的请参考文档 #安装 npm的安装方式 npm install chuck-bigjs #使用方法 import Big from 'chuck-bigjs'; const number...

    chuck:ChucK音乐编程语言

    ” 定时,并发和即时音乐编程语言欢迎来到ChucK! 它是什么? :Chuck是用于实时声音合成和音乐创作的编程语言。 它是开源的,可在MacOS X,Windows和Linux上免费使用。 Chuck提出了一种独特的基于时间的并发编程...

    Hadoop实战 chuck lamz著 韩翼中译 pdf

    本书《Hadoop实战》由Chuck Lamz著作,并由韩翼翻译。本书深入讲解了Hadoop生态系统中的各种工具和组件,通过实战案例,帮助读者理解和掌握如何利用Hadoop解决实际问题。Hadoop生态系统包括但不限于HDFS、MapReduce...

    《Hadoop实战》(Chuck Lam)

    很好的一本hadoop实战书籍,学习hadoop必备参考资料。

    chuck-stuff:学习ChucK(音乐编程语言)

    ChucK是一种实时的、基于时间的音乐编程语言,它专为音乐创作和实验而设计。这个名为"chuck-stuff"的资源包是为学习ChucK编程语言准备的,包含了各种实例代码、实用工具和循环样本,帮助用户更好地理解和运用ChucK。...

    SubSynth:ChucK 的减法合成器

    SubSynth 是一款专为 ChucK 语言设计的减法合成器,ChucK 是一种实时的、面向对象的编程语言,特别适合于音乐和多媒体应用。下面我们将深入探讨 SubSynth 和 ChucK 在减法合成中的概念和实践。 减法合成是最基础的...

    Chuck Norris Jokes Generator.zip

    "Chuck Norris Jokes Generator" 是一个基于JavaScript的项目,它旨在为用户提供一个平台,可以自动生成关于著名动作影星Chuck Norris的幽默笑话。这个压缩包文件包含了一个名为 "chuck-norris-jokes-generator" 的...

    chucknorris-plugin:Chuck Norris Jenkins插件

    Chuck Norris Jenkins插件 这个插件为Jenkins增添了一个绝对令人愉快的功能:根据您的构建成功,失败还是不稳定,它将显示Chuck Norris自动适应构建结果的图片(是的,这是计算机科学!)! 看到这一点,已经有...

    test.chuck:用于test.check的实用程序库

    测试卡盘 test.chuck是一个实用程序库 。 (this space intentionally left blank)注意请注意,从0.2.0版开始,test.chuck(主要)支持ClojureScript,并且最低的Clojure版本为1.7.0。 使用ClojureScript的最低test....

    chuck-norris:使用Chuck Norris笑话API开发的项目

    查克·巴达斯·诺里斯(Chuck Badass Norris) :oncoming_fist: 使用Chuck Norris笑话api开发的项目。 使用的技术 :rocket: ReactJS Axios 除其他外... 如何使用网络存储库? :thinking_face: 使用git clone克隆...

    2019年蓝牙亚洲大会演示文稿_所有PPT_深圳.zip

    《2019年蓝牙亚洲大会演示文稿_所有PPT_深圳》是一个关于蓝牙技术在2019年最新进展的压缩包文件,包含了多份来自不同演讲者的PPT资料,涵盖了蓝牙5.0和5.1的技术更新、蓝牙 mesh 网络的配置与互操作性、蓝牙多链路...

    Jaw-chuck stiffness and its influence on dynamic clamping force during

    标题和描述中提到的知识点包含了“Jaw-chuck stiffness”,“dynamic clamping force”,以及“high-speed turning”。根据给出的标题和部分内容,我们可以深入探讨以下知识点: 1. 夹爪夹具的刚度(Jaw-chuck ...

    Chuck Allison Lecture

    赫赫有名的埃利松,当今软件界泰斗级人物.这里与大家分享的是他的讲座,带有幻灯片. ChuckAllisonLecture contains the slides that accompany Chuck Allison's lecture about code quality .

    ChuckNorris-使用VueJS + api.chucknorris.io构建的Chuck Norris笑话生成器-Vue.js开发

    chucknorris用VueJS + api.chucknorris.io构建的Chuck Norris笑话谁是Chuck Norris? https://zh.m.wikipedia.org/wiki/Chuck_Norris API https:// ap chucknorris Chuck Norris用VueJS + api.chucknorris.io构建的...

Global site tag (gtag.js) - Google Analytics