深度解析冯诺依曼体系

冯·诺依曼结构计算机

美籍匈牙利科学家冯·诺依曼最先提出程序存储的思想,并成功将其运用在计算机的设计之中,根据这一原理制造的计算机被称为冯·诺依曼结构计算机。由于他对现代计算机技术的突出贡献,因此冯·诺依曼又被称为“现代计算机之父”。
说到计算机的发展,就不能不提到匈牙利科学家冯·诺依曼(曾在德国柏林大学任教)。从20世纪初,物理学和电子学科学家们就在争论制造可以进行数值计算的机器应该采用什么样的结构。人们被十进制这个人类习惯的计数方法所困扰。所以,那时以研制模拟计算机的呼声更为响亮和有力。20世纪30年代中期,匈牙利科学家冯诺依曼大胆地提出,抛弃十进制,采用二进制作为数字计算机的数制基础。同时,他还说预先编制计算程序,然后由计算机来按照人们事前制定的计算顺序来执行数值计算工作。
冯·诺依曼计算机 【von Neumann machine】 使用冯诺依曼体系机构的电子计算机。1945年6月,冯·诺依曼提出了在数字计
算机内部的存储器中存放程序的概念(Stored Program Concept),这是所有现代电子计算机的模板,被称为“冯· 诺依曼结构”,按这一结构建造的电脑称为存储程序计算机(Stored Program Computer),又称为通用计算机。冯·诺依曼计算机主要由运算器、控制器、存储器和输入输出设备组成,它的的特点是:程序以二进制代码的形式存放在存储器中;所有的指令都是由操作码和地址码组成;指令在其存储过程中按照执行的顺序进行存储;以运算器和控制器作为计算机结构的中心等。冯诺依曼计算机广泛应用于数据的处理和控制方面,但是存在一定的局限性。

理论概述

冯诺依曼理论的要点是:数字计算机的数制采用二进制;计算机应该按照程序顺序执行。
人们把冯诺依曼的这个理论称为冯诺依曼体系结构。从EDVAC到当前最先进的计算机都采用的是冯诺依曼体系结构。所以冯诺依曼是当之无愧的数字计算机之父。
根据冯诺依曼体系结构构成的计算机,必须具有如下功能:
把需要的程序和数据送至计算机中。
必须具有长期记忆程序、数据、中间结果及最终运算结果的能力。
能够完成各种算术、逻辑运算和数据传送等数据加工处理的能力。
能够根据需要控制程序走向,并能根据指令控制机器的各部件协调操作。
能够按照要求将处理结果输出给用户。
为了完成上述的功能,计算机必须具备五大基本组成部件,包括:
1:输入数据和程序的输入设备;
2:记忆程序和数据的存储器;
3:完成数据加工处理的运算器;
4:控制程序执行的控制器;
5:输出处理结果的输出设备。
冯·诺依曼型计算机从本质上讲是采取串行顺序处理的工作机制,即使有关数据巳经准备好,也必须逐条执行指令序列。而提高计算机性能的根本方向之一是并行处理。因此,近年来人们谋求突破传统冯·诺依曼体制的束缚,这种努力被称为非诺依曼化。对所谓非诺依曼化的探讨仍在争议中,一般认为它表现在以下三个方面的努力。
(1)在冯·诺依曼体制范畴内,对传统冯·诺依曼机进行改造,如采用多个处理部件形成流水处理,依靠时间上的重叠提高处理效率;又如组成阵列机结构,形成单指令流多数据流,提高处理速度。这些方向已比较成熟,成为标准结构;
(2)用多个冯·诺依曼机组成多机系统,支持并行算法结构。这方面的研究目前比较活跃;
(3)从根本上改变冯·诺依曼机的控制流驱动方式。例如,采用数据流驱动工作方式的数据流计算
机,只要数据已经准备好,有关的指令就可并行地执行。这是真正非诺依曼化的计算机,它为并
行处理开辟了新的前景,但由于控制的复杂性,仍处于实验探索之中。

发明过程
现在一般认为ENIAC机是世界第一台电子计算机,它是由美国科学家研制的,于1946年2月14日在费城开始运行.其实由汤米、费劳尔斯等英国科学家研制的"科洛萨斯"计算机比ENIAC机问世早两年多,于1944年1月10日在布莱奇利园区开始运行.ENIAC机证明电子真空技术可以大大地提高计算技术,不过,ENIAC机本身存在两大缺点:(1)没有存储器;(2)它用布线接板进行控制,甚至要搭接几天,计算速度也就被这一工作抵消了.ENIAC机研制组的莫克利和埃克特显然是感到了这一点,他们也想尽快着手研制另一台计算机,以便改进。

1944年,冯·诺伊曼参加原子弹的研制工作,该工作涉及到极为困难的计算。在对原子核反应过程的研究中,要对一个反应的传播做出“是”或“否”的回答。解决这一问题通常需要通过几十亿次的数学运算和逻辑指令,尽管最终的数据并不要求十分精确,但所有的中间运算过程均不可缺少,且要尽可能保持准确。他所在的洛·斯阿拉莫斯实验室为此聘用了一百多名女计算员,利用台式计算机从早到晚计算,还是远远不能满足需要。无穷无尽的数字和逻辑指令如同沙漠一样把人的智慧和精力吸尽。

被计算机所困扰的诺伊曼在一次极为偶然的机会中知道了ENIAC计算机的研制计划,从此他投身到计算机研制这一宏伟的事业中,建立了一生中最大的丰功伟绩。

1944年夏的一天,正在火车站候车的冯·诺伊曼巧遇戈尔斯坦,并同他进行了短暂的交谈。当时,戈尔斯坦是美国弹道实验室的军方负责人,他正参与ENIAC计算机的研制工作。在交谈在,戈尔斯坦告诉了冯·诺伊曼有关ENIAC的研制情况。具有远见卓识的冯·诺伊曼为这一研制计划所吸引,他意识到了这项工作的深远意义。

冯·诺依曼由ENIAC机研制组的戈尔德斯廷中尉介绍参加ENIAC机研制小组后,便带领这批富有创新精神的年轻科技人员,向着更高的目标进军.1945年,他们在共同讨论的基础上,发表了一个全新的"存储程序通用电子计算机方案"--EDVAC(Electronic Discrete Variable Automatic Computer的缩写).在这过程中,冯·诺依曼显示出他雄厚的数理基础知识,充分发挥了他的顾问作用及探索问题和综合分析的能力。诺伊曼以“关于EDVAC的报告草案”为题,起草了长达101页的总结报告。报告广泛而具体地介绍了制造电子计算机和程序设计的新思想。这份报告是计算机发展史上一个划时代的文献,它向世界宣告:电子计算机的时***始了。

EDVAC方案明确奠定了新机器由五个部分组成,包括:运算器、逻辑控制装置、存储器、输入和输出设备,并描述了这五部分的职能和相互关系.报告中,诺伊曼对EDVAC中的两大设计思想作了进一步的论证,为计算机的设计树立了一座里程碑。

EDVAC设计思想之一是二进制,他根据电子元件双稳工作的特点,建议在电子计算机中采用二进制。报告还提到了二进制的优点,并预言,二进制的采用将大简化机器的逻辑线路。

冯·诺依曼结构

冯·诺依曼体系结构的计算机,其基本思想就是存储程序和程序控制。

特点:

采用二进制形式表示数据和指令:在存储程序的计算机中,数据和指令都是以二进制形式存储在存储器中的。从存储器存储的内容来看两者并无区别.都是由0和1组成的代码序列,只是各自约定的含义不同而已。计算机在读取指令时,把从计算机读到的信息看作是指令;而在读取数据时,把从计算机读到的信息看作是操作数。数据和指令在软件编制中就已加以区分,所以正常情况下两者不会产生混乱。有时我们也把存储在存储器中的数据和指令统称为数据,因为程序信息本身也可以作为被处理的对象,进行加工处理,例如对照程序进行编译,就是将源程序当作被加工处理的对象。
采用存储程序方式:这是冯·诺依曼思想的核心内容。如前所述,它意味着事先编制程序,事先将程序(包含指令和数据)存入主存储器中,计算机在运行程序时就能自动地、连续地从存储器中依次取出指令且执行。这是计算机能高速自动运行的基础。计算机的工作体现为执行程序,计算机功能的扩展在很大程度上也体现为所存储程序的扩展。计算机的许多具体工作方式也是由此派生的。冯·诺依曼机的这种工作方式,可称为控制流(指令流)驱动方式。即按照指令的执行序列,依次读取指令,然后根据指令所含的控制信息,调用数据进行处理。因此在执行程序的过程中,始终以控制信息流为驱动工作的因素,而数据信息流则是被动地被调用处理。为了控制指令序列的执行顺序,设置一个程序(指令)计数器PC(Program Counter),让它存放当前指令所在的存储单元的地址。如果程序现在是顺序执行的,每取出一条指令后PC内容加l,指示下一条指令该从何处取得。如果程序将转移到某处,就将转移的目标地址送入PC,以便按新地址读取后继指令。所以,PC就像一个指针,一直指示着程序的执行进程,也就是指示控制流的形成。虽然程序与数据都采用二进制代码,仍可按照PC的内容作为地址读取指令,再按照指令给出的操作数地址去读取数据。由于多数情况下程序是顺序执行的,所以大多数指令需要依次地紧挨着存放,除了个别即将使用的数据可以紧挨着指令存放外、一般将指令和数据分别存放在该程序区的不同区域内。

由运算器、存储器、控制器、输入设备和输出设备五大部件组成计算机系统,并规定了这五部分的基本功能。

局限性

目前CPU的处理速度和内存容量的成长速率要远大于两者之间的流量,将大量数值从内存搬入搬出的操作占用了CPU大部分的执行时间,也造成了总线的瓶颈。

程序指令的执行是串行的,由程序计数器控制,这样使得即使有关数据已经准备好,也必须遵循逐条执行指令序列,影响了系统运行的速度;
存储器是线性编址,按顺序排列的地址访问,这是有利于存储和执行机器语言,适用于数值计算。但高级语言的存储采用的是一组有名字的变量,是按名字调用变量而非按地址访问,且高级语言中的每个操作对于任何数据类型都是通用的,不管采用何种数据结构,多维数组、二叉树还是图,最终在存储器上都必须转换成一维的线性存储模型进行存储。这些因素都导致了机器语言和高级语言之间存在很大的语义差距,这些语义差距之间的映射大部分都要由编译程序来完成,在很大程度上增加了编译程序的工作量。
冯·诺依曼体系结构计算机是为逻辑和数值运算而诞生的,它以CPU为中心,I/O设备与存储器间的数据传送都要经过运算器,在数值处理方面已经达到很高的速度和精度,但对非数值数据的处理效率比较低,需要在体系结构方面有革命性突破。

其他类型计算机

近几年,在计算机体系结构研究方面也已经有了重大进展,越来越多的非冯计算机相继出现,如光子计算机、量子计算机、神经计算机以及DNA计算机等等。
光子计算机(Photonic computer)是一种采用光信号作为物质介质和信息载体,依靠激光束进入反射镜和透镜组成的阵列进行数值运算、逻辑操作和信息的存储和处理。它可以实现对复杂度高、计算量大、实时性强的任务的高效、并行处理,比普通电子计算机快1000倍,在图像处理、模式识别和人工智能方面有着非常巨大的应用前景。
神经计算机(Neural computer)是一种可以并行处理多种数据功能的神经网络计算机,它以神经元为处理信息的基本单元,将模仿大脑神经记忆的信息存放在神经元上。神经网络具有自组织、自学习、自适应及自修复功能,可以模仿人脑的判断能力和适应能力。美国科学家研究出的神经计算机可以模拟人的左脑和右脑,能识别语言文字和图形图像,能控制机器人行为,进行智能决策。它的左脑由100万个神经元组成,用于存储文字和语法规则,右脑由1万多个神经元组成,适用于图形图像识别。这将有可能成为人工智能硬件发展的主攻方向。
量子计算机Quantum computer)是遵循量子力学规律进行高速数学和逻辑运算、存储及处理量子信息的物理装置。量子计算机本身的特性,扩充了逻辑和数学理论,通过核自旋、光子、束缚离子和原子等制成的量子位,创造出经典条件下不可能存在的新的逻辑门。马约拉纳费米子反粒子就是自己本身的属性,或许是令量子计算机的制造变成现实的一个关键。  与经典的比特位不同,对量子位操作1次等同于对经典位操作2次,因为量子不像半导体只能记录0和1,它可以同时表示多种状态。这些都为新的算法实现提供了条件,也为人工智能的发展提供了可能的硬件条件。

全部评论

相关推荐

09-21 21:14
门头沟学院
否极泰来来来来:和他说:这里不好骂你,我们加个微信聊
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务