70年后重读冯·诺依曼:计算机与人脑的差异还有多大?

最近重新读冯·诺依曼的《计算机与人脑》,有一个很强烈的感受。

这本书写于现代计算机刚刚起步的年代。那时,真空管仍然是主要电子元件,晶体管才刚刚出现。冯·诺依曼却已经在认真讨论一个直到今天都没有完全解决的问题:

计算机和人脑,到底有多大差异?

他没有停留在抽象层面,而是直接比较了几个非常具体的指标:元件尺寸、运行速度、能量消耗,以及由这些物理差异最终产生的串行与并行结构。

70年后重新看这些数字,会发现一个很有意思的变化:

冯·诺依曼当年观察到的很多“元件级差距”已经被半导体技术消除了,但他关于“系统组织方式”的判断,反而比当年更值得重视。

70年前,计算机最大的劣势是“元件太差”

冯·诺依曼首先比较的是神经元与人工逻辑元件本身。

当时的结果几乎是一边倒。

神经系统的基本结构极其微小,而真空管巨大、耗电,并且需要大量空间进行组装。即使是刚刚出现的晶体管,在尺寸和功耗上依然远远无法和神经细胞相比。

他估算,天然元件在体积利用率和能量消耗方面,可能比人工元件优越大约 倍。

人工元件唯一压倒性的优势,是速度。

神经元的活动速度大致处于毫秒级,而电子元件可以快上很多个数量级。

所以当时的对比非常清楚:

人脑使用大量极小、极省电、但非常慢的元件;计算机使用少量巨大、耗电、但极快的元件。

从这里,冯·诺依曼进一步得出了一个非常重要的判断。

既然神经元很便宜、很小、很省电,却很慢,那么天然系统最合理的策略,就是大量堆叠这些慢元件,让它们同时工作。

而人工元件当时巨大、昂贵、耗电,却非常快,因此更合理的策略,是制造较少的计算单元,然后高速重复利用。

也就是说,两种系统从物理基础上就走向了两条不同的路线:

大 脑 : 大 量 低 速 单 元 高 度 并 行
计 算 机 : 少 量 高 速 单 元 大 量 时 间 复 用

这是《计算机与人脑》中最核心的观察之一。

但70年以后,第一个发生变化的,恰恰就是这个物理基础。

晶体管已经追上来了

今天最先进的晶体管已经进入纳米尺度。

这意味着冯·诺依曼当年所描述的那种“天然元件在线性尺寸上比人工元件小几百甚至上千倍”的情况,已经不存在了。

现代晶体管的关键结构,与细胞膜、突触间隙等生物结构已经进入了相近的数量级。

元件数量上的差距同样发生了巨大变化。

现代人脑大约有860亿个神经元。

而今天的一颗高端GPU,可以包含上千亿甚至两千亿级晶体管。

如果仅仅比较数量,一颗现代芯片中的晶体管已经可以超过整个人脑的神经元数量。

当然,这并不意味着一颗晶体管等于一个神经元。

恰恰相反,这种比较本身已经说明:今天真正值得比较的层级发生了变化。

晶体管只是一个非常基础的物理开关,而一个神经元具有复杂的内部状态,还通过成千上万个突触与其他神经元连接。

如果把突触也纳入考虑,人脑拥有的连接数量大约可以达到 级甚至更高。

所以现代计算机虽然已经在“基本元件数量”上追上了大脑,但在整个连接结构上,仍然完全不是同一种系统。

更重要的是,能源问题也发生了类似的变化。

冯·诺依曼当年可以直接说一个真空管消耗几瓦,一个神经元只有纳瓦甚至更低,因此两者相差上亿倍。

但今天已经不能这样比较。

现代CMOS晶体管并不是一个始终以固定功率工作的元件。它的主要动态能耗发生在状态切换时,因此真正有意义的问题已经从:

一个晶体管消耗多少瓦?

变成:

完成一次信息处理究竟需要多少能量?

而在这个指标上,现代数字电路其实已经非常高效。

一个简单逻辑操作或者加法所需要的能量,可以低到皮焦耳甚至更低的数量级。

换句话说:

现代计算机真正的问题,已经不再是“晶体管这个元件本身太差”。

这是70年来最重要的变化。

大脑为什么仍然只需要大约20瓦?

如果晶体管已经足够小,单次计算也已经足够节能,而且现代芯片已经能够集成上千亿个晶体管,那么为什么一颗高端GPU仍然需要几百瓦甚至上千瓦,而整个人脑却只消耗大约20瓦?

答案很可能不在单个元件,而在整个系统如何组织这些元件。

现代计算机有一个非常根本的特点:

存储和计算是分开的。

数据和模型权重通常存储在DRAM、HBM、Cache或者SRAM中,真正执行计算的则是CPU核心、CUDA Core或者Tensor Core。

于是一次运算通常不是简单的:

计 算

而是:

读 取 数 据 传 输 计 算 写 回

随着晶体管越来越小,计算本身变得越来越便宜,数据移动反而成为一个巨大的成本。

在现代芯片中,从远端存储层级读取一个数据,所消耗的能量可能比真正做一次加法或者乘法高出几个数量级。

所以今天AI芯片最重要的问题之一,已经不只是“如何提高算力”,而是:

如何减少数据搬运。

这也是为什么现代处理器越来越强调Cache、HBM、带宽、数据复用、3D封装、Chiplet、存内计算。

从这个角度看,大脑的结构非常特别。

在大脑中,我们很难找到一个类似于“CPU”和“内存”的明确分界。

一个突触既是连接,也是状态。

突触强度本身就承载着信息。

神经元内部的各种电化学状态也直接参与计算。

换句话说:

大脑的存储、连接和计算,在物理空间上是高度融合的。

它并不需要像GPU那样不断从“显存”中把几千亿个参数搬到计算单元,再完成矩阵乘法。

很多状态本来就存在于真正发生计算的地方。

这可能是大脑能够维持极高能效的重要原因之一。

所以今天再看人脑和计算机的能耗差异,会得到一个和70年前完全不同的结论:

过去的问题是:

人工元件太耗电。

今天的问题更接近:

人工计算系统组织信息的方式太耗电。

这也是为什么我认为,今天人脑与计算机真正的差距已经逐渐从:

转移到了:


“大脑并行,计算机串行”今天还成立吗?

这是冯·诺依曼原书中另一个非常重要的判断。

他的逻辑非常自然。

既然人工元件非常快却数量有限,那么计算机就倾向于让同一组元件高速反复执行不同任务。

这是一种“时间复用”。

而大脑拥有数量巨大的神经元,因此更适合让大量单元同时活动。

这是一种“空间并行”。

可以非常粗略地概括为:

计 算 机 : 用 时 间 换 空 间
大 脑 : 用 空 间 换 时 间

这个判断在冯·诺依曼那个时代非常准确。

但GPU的出现让情况发生了变化。

现代GPU已经拥有数量巨大的计算单元,可以同时处理海量乘加运算。

深度学习训练又进一步把计算扩展到几十、几百甚至数千颗GPU。

也就是说,现代计算机已经不再是纯粹依靠少数高速单元串行执行任务。

它正在越来越强烈地走向:

从CPU到GPU,本质上就是一次重要的架构转变:

从“少数复杂核心”,逐渐转向“更多相对简单的计算单元”。

从这个角度看,现代计算机其实正在向冯·诺依曼所描述的天然系统靠近。

但这并不意味着:

大脑是并行的,计算机是串行的。

这种说法过于简单。

因为无论是大脑还是计算机,都不可能消灭逻辑上的先后依赖。

例如:

无论拥有多少CPU、GPU或者神经元,都不能让A、B、C同时得出最终答案,因为B依赖A,C又依赖B。

这类关系叫做数据依赖。

所以大脑当然也有大量串行过程。

视觉信息必须先进入神经系统,后续区域才能根据这些输入形成更高层次的表征。

运动决策也必须在一定程度上先形成,再转化为实际运动控制。

因此真正准确的说法应该是:

大脑和计算机都是“局部并行 + 必要串行”的混合系统。

区别不在于谁“有串行”、谁“没有串行”,而在于:

它们把多少工作铺在空间中同时完成,又把多少工作通过时间复用依次完成。

大脑把非常多状态直接固定在巨大的物理网络中。

而现代计算机依然大量依赖高速复用计算单元。

这才是两者真正的差别。

冯·诺依曼最深刻的判断,今天反而更清楚了

冯·诺依曼接下来还有一个判断,我认为到了今天反而更重要。

他说,并行和串行并不能简单互换。

这不仅仅是因为有些计算步骤存在前后依赖。

还有另外一个原因:

把空间上的并行改成时间上的串行,往往会增加存储需求。

假设原来有1000个计算单元同时工作。

每个计算单元的状态可以直接保留在自己的物理结构中。

如果现在只剩下一个处理器,要轮流执行这1000个任务,那么在处理完第一个任务之后,就必须先保存它的状态,再去执行第二个任务。

于是大量原本直接存在于计算结构中的状态,就被转移到了“内存”中。

这就是时间复用带来的代价。

今天的计算机系统里,这种现象随处可见。

操作系统通过上下文切换,让少量CPU核心同时“运行”大量进程,需要不断保存和恢复状态。

而在今天的大语言模型中,这个问题表现得更加明显。

Transformer生成文本时:

后一个Token依赖前面的结果。

为了避免每生成一个Token都重新计算全部历史内容,我们把过去的Key和Value保存起来。

这就是KV Cache。

于是:

上 下 文 越 长 需 要 保 存 的 历 史 状 态 越 多 占 用 显 存 越 大

如果从冯·诺依曼的视角来看,这是一个非常典型的例子:

时间上的连续计算,需要以空间中的存储作为代价。

也正因为如此,单纯比较“每秒能完成多少次运算”并不足以评价一个计算系统。

一个系统究竟有多高效,还取决于它:

  • 如何保存状态;
  • 如何传递信息;
  • 如何组织依赖;
  • 如何在空间和时间之间分配计算资源。

这才是冯·诺依曼这部分讨论真正有价值的地方。

结语:70年后,问题已经变了

如果只看《计算机与人脑》中的具体数字,很多结论显然已经过时。

当年天然元件在线性尺寸、体积和能量消耗上的巨大优势,已经被70年的半导体技术大幅缩小,甚至在某些指标上完全消失。

今天我们已经拥有:

纳米级晶体管;

数千亿晶体管的单颗芯片;

GHz级运行速度;

极低能耗的逻辑操作;

以及极其强大的并行计算能力。

换句话说:

人类已经制造出了极其优秀的计算元件。

但是人脑和计算机的差异却没有因此消失。

相反,问题变得更加清晰。

真正巨大的区别,可能已经不再是:

神经元比晶体管小多少?

也不是:

神经元比晶体管省多少电?

而是:

为什么数百亿个低速神经元、通过数十万亿乃至更多局部连接,以高度分布式、异步、稀疏、存算融合的方式组织起来,只需要大约20瓦,就能够形成如此复杂的智能?

现代GPU已经开始走向大规模并行。

现代AI开始接受低精度计算。

存内计算试图缩短存储和计算之间的距离。

神经形态计算试图使用事件驱动和稀疏激活。

3D封装试图让计算和存储靠得更近。

这些看似不同的技术方向,其实都在逐渐逼近同一个问题:

当晶体管已经足够好了以后,我们到底应该怎样组织它们?

从这个角度再看《计算机与人脑》,真正不过时的并不是那些具体数字,而是冯·诺依曼提出问题的方式。

70年前,他看到的是两种由不同物理元件构成的计算机器。

70年后,我们越来越清楚地发现:

计算机与人脑真正深刻的差异,也许从来都不在“零件”,而在“组织”。

0条留言

留言