冯·诺依曼机(von Neumann machine),又称冯·诺依曼计算机,根据
冯·诺依曼提出的
存储程序概念设计的
计算机。主要特征是:指令与数据都以
二进制形式储存在
存储器里;指令根据其储存的
顺序执行。
冯·诺依曼型计算机一般具有以下五个功能:必须具有
长期记忆程序、数据、中间结果及最终运算结果的能力;能够完成各种算术、逻辑运算和
数据传送等
数据加工处理的能力;能够根据需要
控制程序走向,并能根据指令控制机器的各部件协调操作;能够按照要求将处理结果输出给用户。
冯·诺依曼型计算机从本质上讲是采取串行
顺序处理的
工作机制,即使有关数据已经准备好,也必须逐条
执行指令序列。而提高
计算机性能的根本方向之一是并行处理。因此,近年来人们谋求突破传统冯·诺依曼体制的束缚,这种努力被称为非诺依曼化。对所谓非诺依曼化的探讨仍在争议中,一般认为它表现在以下三个方面的努力。
依靠时间上的重叠提高处理效率;又如组成阵列机结构,形成
单指令流多数据流,提高处理速
(3)从根本上改变冯·诺依曼机的
控制流驱动方式。例如,采用
数据流驱动工作方式的
数据流计算机,只要数据已经准备好,有关的指令就可并行地执行。这是真正非诺依曼化的计算机,它为并行处理开辟了新的前景,但由于控制的复杂性,仍处于实验探索之中。
采用
二进制形式表示数据和指令:在存储程序的计算机中,数据和指令都是以二进制形式存储在
存储器中的。从存储器存储的内容来看两者并无区别.都是由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,它可以
同时表示多种状态。这些都为新的算法实现提供了条件,也为人工智能的发展提供了可能的硬件条件。