Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。
摩尔定律——众所周知(或者至少我们这么认为)。准确的说,摩尔定律是一个预言:每个集成电路可容纳的元器件数目(也可以说是每个元器件的最低成本)每24个月就会增加一倍(数据已修正过,1965年的原始预测是每12个月)。摩尔定律在一些更有用的形式中经常被用来作为计算技术在许多领域的持续指数增长的一个缩影——磁盘容量,时钟速度,随机存取存储器。每当我们接近某些关键的计算机制造技术的极限时,这样的争论就会产生:这是摩尔定律的终结吗?到目前为止,答案一直都是否定的。
但摩尔定律本质上是一个关于人类的创造力、市场力量和物理学的声明。每当指数增长在一个领域出现衰退时——比如时钟速度,或者一个特殊的掩模技术,工程师们就会发现一些新的领域或新的技术以指数级的速度改进。没有任何一种技术能独立地长期地经历指数级增长,与之相反的是,通过迅速转向新的技术来促使整体增长率仍然保持是指数级的。
制造技术的发现和改进,一方面是由计算需求推动,另一方面受物理学的限制。介于这两方面之间的是政治、科学和普通过时工程的泥沼。很难理解驱动需求的众多因素,以及影响创新的诸多因素,包括规模经济、对新思想的文化态度、广泛的市场营销活动,以及大型企业在垂死挣扎期间发生的奇怪事件。相比之下,只要你对量子物理、信息理论和黑洞的属性有一定的了解,那么理解计算的极限就很容易了。
终极笔记本电脑完全体
在2000年发表在自然杂志上的一篇论文中,赛斯·劳埃德博士基于我们当前所认知的物理学,推测(并解释了)计算的极限。当然,我们其实还并不清楚物理学的一切,但与工程学的其他领域一样,我们已然获得了足够多的知识来对未来的计算做出一些非常有趣的预测。这篇论文总结了关于计算物理极限的现有工作,并介绍了几种新的计算结果,其中最显著的是计算的最终速度极限。在我看来,最有趣的是计算出了一个非常具体的上限,即一个普遍的摩尔定律可以保持多少年 (继续阅读,你会知道到底时间有多长!)。
劳埃德博士首先假设我们不知道未来的计算机制造技术会是什么样子。关于摩尔定律的未来,大多数的讨论都围绕着特定的制造技术的物理极限,例如光的波长对光学掩模中特征尺寸的限制。相反,他完全忽略了制造业,并使用了几个关键的物理常数:光速c,约化普朗克常量h(通常被写成h-bar,这个在标准HTML中是不可用的符号,所以你必须想象一下吧),重力常数g,和玻尔兹曼常数kB。这些常数和我们目前对广义相对论和量子物理的有限理解足以对计算产生许多重要的限制。因此,这些结果并不依赖于特定的制造技术。
这篇论文使用了“终极笔记本电脑”来帮助计算具体的结果。最终的笔记本电脑的重量为1千克,体积为1升(与2008年Eee PC的规格几乎完全相同),并且在计算的最大物理极限下运行。将这些限制应用在终极笔记本电脑会让你能够感受到,你能拥有的可随身携带的计算能力的极限大概在什么水平——当然,这是不考虑电池寿命的。
能量限制速度
那么,到底是怎么限制的呢?这篇论文的开始是推导对每秒计算数的最终限制。这取决于整个系统的总能量,它可以用爱因斯坦著名的质量和能量方程来计算,E = mc2。(实话告诉你,我们需要知道光速。)考虑到系统的总能量,我们需要知道系统到底能够多快的从一个可区分的状态转换到另一个可区分的状态。比如说,翻转比特位。这一结果被海森堡测不准原理所限制。劳埃德对海森堡测不准原理的看法是:
特别来说,正确解释时间能量的海森堡测不准原理ΔEΔt≥h不在于它需要时间Δt来测量能量精度ΔE(这是一种谬论,阿哈罗诺夫和玻姆解决了它)而是一个量子态传播能量ΔE需要时间至少Δt =πh / 2ΔE来进化正交(这样才能区分)状态。最近,马克勒斯和列维京扩展了这一结果,表明一个平均能量为E的量子系统需要至少Δt=h/2E才能进化到一个正交的状态。
换句话说,海森堡测不准原理意味着,一个系统将至少需要花费一段时间来以某种可观察的方式改变,而这个时间又与系统的总能量有关。结果是,一个能量为E的系统可以每秒执行2E/πh逻辑运算(逻辑运算是,例如,在两个比特的输入上执行和操作,粗略地认为它是单个比特的操作)。因为终极笔记本的质量是1千克,所以它有能量E= mc2=89874 x 1016焦耳。终极笔记本电脑每秒钟最多可以执行5.4258 x 1050操作。
我们现在有多接近每秒5 x 1050的操作呢?每一个操作基本上都是一个单比特位操作,因此我们必须将当前的性能度量转换为每秒钟对应的单比特位操作。最常用的每秒钟操作的测量方法是FLOPS(每秒浮点运算),工具是通过LINPACK(见维基百科上关于每秒浮点计算的页面)来测量。为了估计单个32位浮点操作中涉及的实际物理单位操作的确切数量,需要关于FPU浮点运算单元实现的专有知识。LINPACK所报告的FLOPS的数量也会随着编译器优化级别的不同而发生很大的变化。对于本文,我们将对每个FLOPS进行1000次的单比特位操作(SBOPS),并恳请任何有更好的估计方法的人将方法发布在评论中。
当我们的FLOPS到SBOPS转换系数为1000,当前的LINPACK记录保持者,“路跑者”超级计算机(就坐落在我的家乡,新墨西哥州的阿尔伯克),达到了每秒钟进行1千万亿次浮点运算,或者是1000 x 1015=1 x 1018的SBOPS。但这个数据是对整个超级计算机而言的——而终极笔记本电脑理想的质量只有一千克,体积只有一升。目前笔记本电脑的cpu约为每秒10亿次浮点运算,或1012个SBOPS,这使我们在达到计算速度的理论物理极限之前,大约还有39个数量级的距离。最后,现有的量子计算机已经达到了计算速度的极限——在一个非常小的位数和研究环境中,尽管如此,它还是达到了极限。
熵限制内存
我们真正想知道的是,终极笔记本电脑到底可以存储多少合法购买的dvd。一个系统可以存储的数据量是它可以使用的可区分物理状态的数量的一个函数——每个不同的内存配置都需要一个不同的物理状态。根据劳埃德的说法,我们“知道一个多世纪以来,物理系统的可访问状态的数量,W,与它的热力学熵有关,即S=kB ln W”(S是系统的热力学熵)。这意味着,如果我们知道它的总熵,我们就可以计算终极笔记本电脑可以存储的比特数。
计算系统的精确熵是极其困难的。论文中摘要:
要精确计算一千克物质的最大熵,需要完全了解基本粒子的动力学、量子引力等。然而我们不具备这样的知识。不过,最大熵可以通过一种类似于早期宇宙中计算热力学量的方法来估计。这个想法很简单:将计算机占用的体积模拟为具有总平均能量E的基本粒子的集合。
接下来的讨论相当激烈;例如,它包含了一个注释,在计算黑洞的情况下,重子数可能不是守恒的,在这里我需要引用劳埃德的原话。但最终的结果是,在最大熵下运行的终极笔记本电脑,可以存储至少2.13 x 1031位元。当然,最大熵意味着笔记本电脑的所有物质都转化为能量,基本上等同于热核爆炸。这正如劳埃德所指出的,“很明显,仅仅是因为包装问题就不太可能得到这个限度。”也许后续的论文可以讨论终极笔记本的电脑包。
现代计算机有多接近这个极限?在2008年,一台现代的笔记本电脑可以存储250GB,大约2 x 1012位。距离最大存储容量大约还有19个数量级,或者说是容量再翻倍64次。从1956年到2005年,每平方英寸的磁盘容量已经翻倍了30次。按照这个历史速度,磁盘容量的64次翻倍将只需要大约50到100年的时间。这并不是摩尔定律在计算上的总体限制,但是它暗示了在我们有生之年可以结束摩尔定律的应用的可能性。我想我们的文件系统开发人员应该开始考虑第二职业了。
冗余和纠错
有很多理由为什么现有的计算机没有达到计算机物理的极限。正如劳埃德挖苦地指出的那样,“现有计算机的大部分能量都被锁在了计算机构造的粒子的质量中,只留下了一个极小的部分用于执行逻辑。”例如,在DRAM中存储一个比特,例如电子,就会使用“数十亿的自由度”——而不只是一个自由度。现有的计算机更倾向于以原子的形式而不是等离子体的形式进行计算。
另一个关于计算的实际限制是操作的错误率,它被计算机向外部环境散热的速率所限制。正如冯诺依曼最初提出的理论那样,逻辑运算本身并不需要能量的消耗。可逆的操作(如“不”)只要不破坏信息本身就不需要能量的消耗,只有不可逆转的操作(如“和”)才需要。这在直觉上是说得通的;因为破坏(擦除)一个比特的唯一方法是将这些信息转化为热量,否则比特就会被移到别的地方,而它所代表的信息仍然存在。可逆计算已经实现,并显示出具有极低的功耗。
当然,不管计算是否可逆,总是会有一些能量会被消耗掉。然而,对位元的擦除——尤其是错误——只需要消耗极小的能量。系统以“热量”形式“拒绝环境错误”的速率限制了系统中误码率;或者,反过来说,误码率与系统传热速率的组合限制了位操作的速率。劳埃德估计系统相对于表面面积并假设存在黑体辐射的情况下可以拒绝错误位的速率差不多是每米每秒7.195 x 1042比特。
“智能灰尘”的计算极限
就在我读“终极极限”的同时,我也阅读了Vernor Vinge的《天空的深处》一文,这也是他众多“智能灰尘”系列科幻小说中的一部。“智能灰尘”的概念是指分散在环境中的微小计算元素,它是一种低功率的分布式计算机。最初让我感到最不可思议的是一颗灰尘可以拥有的惊人的存储空间,这使得Vinge书中的智能灰尘完全可以为整个系统手册提供足够的存储空间。因此,我坐下来计算了一台1微米大小计算机的存储和计算的极限,但是约束条件是,其物质仍然以原子的形式存在(而不是等离子体)。
劳埃德计算出,在这种情况下,终极笔记本电脑(一升一千克)可以存储1025字节,每秒处理1040个单位操作。终极笔记本电脑是一升,一升有1015立方米。每秒钟将总存储和操作除以1015,就会得到1010个字节和每秒1025个单位操作,数据存储中大约有1g内存和众多的每秒浮点计算,以至于说这些前缀都是没有意义的。基本上,一颗灰尘的计算潜力远远超过了地球上最大的超级计算机——科幻作家们,赶快燥起来吧!当然,这些计算都没有考虑到电源传输或输入/输出带宽,这也许会成为更重要的计算限制。
终极笔记本电脑的影响
计算终极笔记本电脑的极限确实是很有趣的,但是这对今天的计算机科学又意味着什么呢?我们现在已经可以推导出一个理论上的上限,来解释广义摩尔定律能够持续多久。目前的笔记本电脑存储1012位,每秒处理1012 个单位操作。终极笔记本电脑可以存储1031位数据,每秒处理1051个单位运算,这分别相差了1019和1039个数量级。劳埃德估计,在过去的50年里,摩尔定律的比率的提升是108个数量级。假设存储密度和计算速度都会每50年提高108倍,那么存储容量将在大约125年内达到极限,而每秒钟的运算速度将在250年内达到极限。有人认为,在最后的125年里,人们会疯狂地开发更好的压缩算法——或者是更先进的理论物理学。
一旦摩尔定律停止,想要提升计算能力的方法就只能是增加计算机的质量和体积,但这也会遇到基本的限制。根据一篇题为《计算的普遍限制》的未发表的论文估计,根据摩尔定律,整个宇宙的计算能力将在600年后耗尽。
250年的时间是一段迷人的时光。它看似与今天活着的人联系非常遥远,但事实上已经足够近了,我们完全做不到忽视它。人类长期活动的典型规划范围(比如管理生态系统)大约有300年的历史,因此为摩尔定律的终结进行规划也是说得通的。我,明天,就要开始研究LZVH压缩算法啦。
有一件事是极其明确的:现在的时代就是计算机的黄金时代。让我们放飞自我吧。
本文作者Valerie Henson是一位专门从事文件系统的Linux顾问,并且拥有一台“重量为一公斤、体积为一升”的笔记本电脑。
英文原文:https://lwn.net/Articles/286233/
译者:任宇は神様