John von Neumann

那些改变了世界的IT人(1)——冯·诺依曼

在今天电脑已经成为生活、学习、娱乐的必备物品,但是你可曾想过为什么电脑要做成这个样子呢?

其实早在20世界初物理学家和数学家们已经在争论计算机的形态问题了。曾经出现过无数种计算机的设计方案,而总的来说大致分为两大类:模拟计算机和数字计算机。咦?提起计算机都说是数字时代、数字产品,难道还有模拟的计算机?

其实模拟计算机我们很多人都接触过,只不过以现在的标准很难看出这是个计算机啦。学过电工学的同学都知道有个放大电路,加法电路,积分电路,微分电路等等,这些电路就是构成模拟计算机的运算原件。通过组合不同的原件就能获得不同的运算函数,这就是模拟计算机的基本原理。模拟计算机的运算结果就变现在最终的电压、电流等参数上,因为精度与元器件的质量有很大关系,好处是模拟计算机可以使用人类最习惯的十进制计数法。

John von Neumann与模拟计算机对应的就是数字计算机,其实数字计算机在当时算是一个比较超前的设计,数字计算机不一定使用的是二进制(无数物理学家和数学家争论了差不多半个世纪),但是都有一个好处就是数字计算机的结果足够精确(针对数字计算而言)。但是计算机到底要怎么设计一直争论到20世纪中叶尚无定论。

1942年为爱荷华州立大学的约翰·文森特·阿塔纳索夫设计了全世界第一台电子管计算机(教科书上说是Eniac埃尼阿克是不对的),它使用了二进制数学,不可编程,只是用来求解线性方程组。不过这样的计算机显然是不能满足人类需要的。1945年冯·诺伊曼提出了自己关于计算机的结构与逻辑设计的方案,并参与了世界上第二台数字计算机Eniac埃尼阿克的研制工作。冯·诺依曼关于计算机结构的理论被后人称为冯·诺依曼理论,而采用此结构的计算机被称为冯·诺依曼结构(架构)计算机。时至今日,绝大多数的计算以仍然采用的是冯·诺依曼结构。

冯·诺依曼原理的基本理念包括两部分:1、计算机需要由五部分构成,分别为输入设备、输出设备、计算器、控制器、存储器;2、存储程序思想——把计算过程描述为由许多命令按一定顺序组成的程序,然后把程序和数据一起输入计算机,计算机对已存入的程序和数据处理后,输出结果。前者从功能和结构上统一了计算机设计思想,为计算机的软硬件发展提供了有利的平台;后者是则是编程和存储思想的前身。

冯·诺依曼对计算机的基本功能做出了如下定义:1、把需要的程序和数据送至计算机中,因此需要输入设备,也就是电脑通用的鼠标、键盘、触摸屏等;必须具有长期记忆程序、数据、中间结果及最终运算结果的能力,因此需要存储器,不过这里的存储器指的是CPU寄存器和内存,并不包括硬盘,光盘,U盘等外存;能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力,也就是需要运算器来完成计算机的运算功能;能够根据需要来控制程序走向,并能根据指令来控制机器的各部件协调操作,就是需要控制器来控制程序走向,控制器和运算器再加上之前的寄存器是现代CPU的三大主要部件;能够按照要求将处理结果输出给用户,就是需要由显示器、打印机等输出设备。这便是计算机能运行的最低硬件要求;置于显卡、声卡、网卡等都是在这些设备的基础上来完成的。

当然还有一个重点就是冯·诺依曼认为计算机应该抛弃十进制采用二进制,一则是元器件上比较容易实现,二则是二进制的逻辑运算简单。冯·诺依曼架构的计算机容错基本是0,举个例子,让计算机判断某个电位是1.1V还是1.2V也许很难,但是判断是高电平还是低电平则非常容易,以现在的观点来看就是使用二进制量化一切过程,想想后来那么多的量化指标,甚至连思想品德都能量化了,这估计也是受冯·诺依曼的影响吧。