美籍匈牙利数学家冯·诺依曼于1946年提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式储存。冯·诺依曼理论的要点是:抛弃十进制,采用二进制作为数字计算机的数制基础。同时,预先编制计算程序,然后由计算机来按照人们事前制定的计算顺序来执行数值计算工作。

中文名

冯·诺依曼体系结构

英文名

von Neumann architecture

别名

普林斯顿结构

提出者

约翰·冯·诺伊曼

简介

从ENIAC到当前最先进的计算机都采用的是冯·诺依曼体系结构。所以冯·诺依曼是当之无愧的数字计算机之父。

发展背景

电子计算机的问世,最重要的奠基人是英国科学家艾兰·图灵(Alan Turing)和美籍匈牙利科学家冯·诺依曼(John Von·Neumann)。图灵的贡献是建立了图灵机的理论模型,奠定了人工智能的基础。而冯·诺依曼则是首先提出了计算机体系结构的设想。

冯·诺依曼早期以算子理论、共振论、量子理论、集合论等方面的研究闻名,他开创了冯·诺依曼代数。他为研制电子数字计算机提供了基础性的方案。[1]

1946年美籍匈牙利科学家冯·诺依曼提出存储程序原理,把程序本身当作数据来对待,程序和该程序处理的数据用同样的方式存储,并确定了存储程序计算机的五大组成部分和基本工作方法。

半个多世纪以来,计算机制造技术发生了巨大变化,但冯·诺依曼体系结构仍然沿用至今,人们总是把冯·诺依曼称为“计算机鼻祖”。

体系结构

(1)采用存储程序方式,指令和数据不加区别混合存储在同一个存储器中,(数据和程序在内存中是没有区别的,它们都是内存中的数据,当EIP指针指向哪,CPU就加载那段内存中的数据,如果是不正确的指令格式,CPU就会发生错误中断.在现在CPU的保护模式中,每个内存段都有其描述符,这个描述符记录着这个内存段的访问权限(可读,可写,可执行).这就变相的指定了哪些内存中存储的是指令哪些是数据)指令和数据都可以送到运算器进行运算,即由指令组成的程序是可以修改的。

(2)存储器是按地址访问的线性编址的一维结构,每个单元的位数是固定的。

(3)指令由操作码和地址组成。操作码指明本指令的操作类型,地址码指明操作数和地址。操作数本身无数据类型的标志,它的数据类型由操作码确定。

(4)通过执行指令直接发出控制信号控制计算机的操作。指令在存储器中按其执行顺序存放,由指令计数器指明要执行的指令所在的单元地址。指令计数器只有一个,一般按顺序递增,但执行顺序可按运算结果或当时的外界条件而改变。

(5)以运算器为中心,I、O设备与存储器间的数据传送都要经过运算器。

(6)数据以二进制表示。

结构特点

结构图片

(1)计算机处理的数据和指令一律用二进制数表示

(2)顺序执行程序计算机运行过程中,把要执行的程序和处理的数据首先存入主存储器(内存),计算机执行程序时,将自动地并按顺序从主存储器中取出指令一条一条地执行,这一概念称作顺序执行程序。

冯诺依曼结构计算机的五大部分:1、输入数据和程序的“输入设备”;2、记忆程序和数据的“存储器”;3、完成数据加工处理的“运算器”;4、控制程序执行的“控制器”;5、输出处理结果的“输出设备”。

对计算机限制

从计算机 诞生那天起,冯.诺依曼体系结构占据着主导地位,几十年来计算机体系结构理论并没有新理论出现。随着计算机应用范围的迅速扩大,使用计算机解决的问题规模也越来越大,因此对计算机运算速度的要求也越来越高。而改进计算机的体系结构是提高计算机速度的重要途径,从而促进了计算机体系结构的发展,出现了诸如数据流结构、并行逻辑结构、归约结构等新的非冯诺依曼体系结构。

冯.诺依曼体系结构是现代计算机的基础,现在大多计算机仍是冯.诺依曼计算机的组织结构,只是作了一些改进而已,并没有从根本上突破冯体系结构的束缚。冯.诺依曼也因此被人们称为“计算机之父”。然而由于传统冯.诺依曼计算机体系结构天然所具有的局限性,从根本上限制了计算机的发展。

从本质上讲,冯.诺依曼体系结构的本征属性就是二个一维性,即一维的计算模型和一维的存储模型,简单地说“存储程序”是不确切的。而正是这二个一维性,成就了现代计算机的辉煌,也限制了计算机的进一步的发展,真可谓“成也冯,败也冯”。

冯·诺依曼计算机的软件和硬件完全分离,适用于作数值计算。这种计算机的机器语言同高级语言在语义上存在很大的间隔,称之为冯.依曼语义间隔。造成这个差距的其中一个重要原因就是存储器组织方式不同,冯·诺依曼机存储器是一维的线性排列的单元,按顺序排列的地址访问。而高级语言表示的存储器则是一组有名字的变量,按名字调用变量,不考虑访问方法,而且数据结构经常是多维的(如数组,表格)。

另外,在大多数高级语言中,数据和指令截然不同,并无指令可以像数据一样进行运算操作的概念。同时,高级语言中的每种操作对于任何数据类型都是通用的,数据类型属于数据本身,而冯.诺依曼机的数据本身没有属性标志,同一种操作要用不同的操作码来对数据加以区分。这些因素导致了语义的差距。如何消除如此大的语义间隔,这成了计算机面临的一大难题和发展障碍。

非诺依曼化

必须看到,传统的冯·诺依曼型计算机从本质上讲是采取串行顺序处理的工作机制,即使有关数据已经准备好,也必须逐条执行指令序列。而提高计算机性能的根本方向之一是并行处理。因此,近年来人们谋求突破传统冯·诺依曼体制的束缚,这种努力被称为非诺依曼化。对所谓非诺依曼化的探讨仍在争议中,一般认为它表现在以下三个方面的努力。

(1)在冯·诺依曼体制范畴内,对传统冯·诺依曼机进行改造,如采用多个处理部件形成流水处理,依靠时间上的重叠提高处理效率;又如组成阵列机结构,形成单指令流多数据流,提高处理速度。这些方向已比较成熟,成为标准结构;

(2)用多个冯·诺依曼机组成多机系统,支持并行算法结构。这方面的研究目前比较活跃;

(3)从根本上改变冯·诺依曼机的控制流驱动方式。例如,采用数据流驱动工作方式的数据流计算机,只要数据已经准备好,有关的指令就可并行地执行。这是真正非诺依曼化的计算机,它为并行处理开辟了新的前景,但由于控制的复杂性,仍处于实验探索之中。