冯·诺依曼体系结构是现代计算机的基础,也是人工智能学科的基础,但它天然的局限性也是计算机科学课人工智能无法快速发展的原因之一,直到现在大多数计算机仍是冯·诺依曼计算机的组织结构,因此深入学习冯·诺依曼体系结构及其特点与局限,能更好地发展和学习人工智能。
1946年,美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,并确定了存储程序计算机的五大组成部分和基本工作方法。半个多世纪以来,计算机制造技术发生了巨大变化,但冯·诺依曼体系结构仍然沿用至今,人们总是把冯·诺依曼称为“现代计算机之父”。冯·诺依曼体系结构如图1-7所示。
图1-7 冯·诺依曼体系结构
根据冯·诺依曼体系结构构成的计算机,必须具有如下功能:能够向计算机发送所需的程序和数据;必须具有长期记忆程序、数据、中间结果及最终运算结果的能力;能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力;能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作;能够按照要求将处理结果输出给用户。
将指令和数据同时存放在存储器中,是冯·诺依曼计算机方案的特点之一。计算机由控制器、运算器、存储器、输入设备、输出设备五部分组成。冯·诺依曼提出的计算机体系结构,奠定了现代计算机的结构理念。
在计算机诞生之前,人们在计算的精度和数量上出现了瓶颈,对于计算机这样的机器的需求就十分强烈,冯·诺依曼的逻辑和计算机思想指导他设计并制造出历史上的第一台通用电子计算机。他的计算机理论主要受自身数学基础的影响,并且具有高度数学化、逻辑化特征,对于该理论,他将其称作“计算机的逻辑理论”。而他的计算机存储程序的思想,则是他的另一个伟大创新,通过内部存储器安放存储程序,成功解决了当时计算机存储容量太小、运算速度过慢的问题。
第二次世界大战期间,美军要求实验室为其提供计算量庞大的计算结果,于是便有了研制电子计算机的设想。面对这种需求,美国立即组建研发团队,包括许多工程师与物理学家,试图开发全球首台计算机(后世称作ENIAC)。虽然采取了最先进的电子技术,但缺少原理上的指导。这时,冯·诺依曼出现了。他提出了一个至关重要的方面—计算机的逻辑结构。冯·诺依曼从逻辑入手,带领团队对ENIAC进行改进。他的逻辑设计具有以下特点:将电路、逻辑两种设计进行分离,给计算机建立创造最佳条件;将个人神经系统、计算机结合在一起,提出全新理念,即生物计算机。
即便ENIAC是通过当时美国乃至全球顶尖技术实现的,但它采用临时存储,将运算器确定成根本,故而缺点较多,如存储空间有限、程序无法存储、运行速度较慢,具有先天不合理性。冯·诺依曼以此为前提制定了以下优化方案:用二进制进行运算,大大加快了计算机速度;存储程序,也就是通过计算机内部存储器保存运算程序。如此一来,程序员仅通过存储器写入相关运算指令,计算机便能立即执行运算操作,大大提高了运算效率。
冯·诺依曼体系结构固然为现代计算机打下了基础,直到现在,大部分计算机仍在用冯·诺依曼计算机的组织结构,只是做了一些改进,并没有从根本上突破冯·诺依曼体系结构的局限性。要知道,传统冯·诺依曼计算机体系结构所具有的天然局限性从根本上限制了计算机的发展。
现代计算机发展所遵循的基本结构形式始终是冯·诺依曼体系结构。这种结构的特点是:程序存储,共享数据,顺序执行,需要CPU从存储器取出指令和数据进行相应的计算。其主要特点有:①单处理机结构,机器以运算器为中心;②采用程序存储思想;③指令和数据一样可以参与运算;④数据以二进制表示;⑤将软件和硬件完全分离;⑥指令由操作码和操作数组成;⑦指令顺序执行。
CPU与共享存储器间的信息交换速度成为影响系统性能的主要因素,而信息交换速度的提高又受制于存储元件的速度、存储器的性能和结构等诸多条件,而传统冯·诺依曼计算机体系结构的存储程序方式造成了系统对存储器的依赖,CPU访问存储器的速度制约了系统运行的速度。
集成电路IC芯片的技术水平决定了存储器及其他硬件的性能。为了提高硬件的性能,以英特尔公司为代表的芯片制造企业在集成电路生产方面做出了极大的努力,并且获得了巨大的技术成果。现在每隔18个月,IC的集成度翻1倍,性能也提升1倍,产品价格降低一半,这就是所谓的“摩尔定律”。这个规律已经持续了40多年,估计还将延续若干年。然而,电子产品面临的两个基本限制是客观存在的:光的速度和材料的原子特性。第一,信息传播的速度最终将取决于电子流动的速度,电子信号在元件和导线里流动会产生时间延迟,频率过高会造成信号畸变,所以元件的速度不可能无限地提高直至达到光速。第二,计算机的电子信号存储在以硅晶体材料为代表的晶体管上,集成度的提高在于晶体管变小,但是晶体管不可能小于一个硅原子的体积。随着半导体技术逐渐逼近硅工艺尺寸极限,摩尔定律原来导出的规律将不再适用。
指令和数据存储在同一个存储器中,会形成系统对存储器的过分依赖。如果储存器件的发展受阻,系统的发展也将受阻。指令在存储器中按其执行顺序存放,由指令计数器PC指明要执行的指令所在的单元地址,然后取出指令执行操作任务,所以指令的执行是串行的,影响了系统执行的速度。
存储器是按地址访问的线性编址,按顺序排列的地址访问,利于存储和执行的机器语言指令,适用于做数值计算。但是高级语言表示的存储器则是一组有名字的变量,按名字调用变量,不按地址访问。机器语言同高级语言在语义上存在很大的间隔,称之为冯·诺依曼语义间隔。消除语义间隔成了计算机发展面临的一大难题。
冯·诺依曼计算机体系结构是为算术和逻辑运算而诞生的,目前在数值处理方面已经达到较高的速度和精度,而非数值处理应用领域发展缓慢,需要在体系结构方面有重大的突破。
传统的冯·诺依曼型结构属于控制驱动方式。它是执行指令代码对数值代码进行处理,只要指令明确,输入数据准确,启动程序后自动运行且结果是预期的。一旦指令和数据有错误,机器不会主动修改指令并完善程序。而人类生活中有许多信息是模糊的,事件的发生、发展和结果是不能预期的,现代计算机的智能是无法应对如此复杂任务的。
现代计算机一直在不断改善,量子计算机就是在这样的社会背景下诞生的产物,它能解决以前无法解决的问题,并在任意长的时间里可靠运行,也为人工智能的发展提供了有力的硬件条件。但计算机的模糊性和通用性并没有得到有效的改善,这种缺陷很难确保传统计算机可以实现人工智能。即使量子计算机可以通过图灵测试,也许离实际的人工智能还相差甚远。