[音乐] 上一讲我们介绍了许多C语言程序的例子,大家
已经知道计算机是通过执行程序来完成各种任务的。
那么计算机要能执行程序,它的基本结构应该是怎样的? 程序、
指令以及数据之间的关系又是怎样的? 这些问题将在本讲中进行解答。
在解答这些问题之前,我们先了解一下最早的通用计算机的基本结构。
世界上第一台通用的电子计算机,
是在1946年2月,由美国宾夕法尼亚大学研制的。
它的名称叫ENIAC,它是电子真空管的计算机。
当时是第二次世界大战,
美国军方为了解决大炮和导弹弹道计算问题而提出来的。
这台机器它的运算速度,可以达到每秒5000次加法运算。
同时呢它还能够进行平方、 立方、 sin、 cos等等这样的一些数值计算。
它是用10进制来表示信息,并且用10进制进行直接运算的。
它的编程方式是手动编程方式,因此它是通
过设置开关和插拔电缆来实现的这种编程。
这台机器是个庞然大物。
占地有170平米,重30吨。
有18000多个真空管。
耗电有160千瓦,当时开机的时候,整个费城地区的照明都会
闪烁变暗,所以它是非常耗电的。
那么这台机器正式运行到1955年10月2号, 一共运行约10年时间。
那么计算机发展过程 当中,一个非常重要的人物是冯.诺依曼。
他是匈牙利裔的美籍的数学家。
当时呢他正参加第一颗原子弹的研制工作。
那么涉及到非常困难的这个弹道计算问题。
在44年夏的一天,他 正好巧遇了美国弹道实验室的军方负责人,
戈尔斯坦,他呢也是参加了这个ENIAC的研制工作。
那么这样的话,冯.诺依曼就被戈尔斯坦呢介绍 加入了ENIAC这台计算机的这个研制小组。
然后在他们研制过程当中,发觉 他们研制的这个ENIAC机器存在很多问题,比如说没有存储器。
因此他们在设想,如果造一台新的计算机,应该是什么样子的。
在45年的时候,冯.诺依曼在这个ENIAC研制小组 共同讨论的基础上,就起草了一份报告。
就是关于EDVAC计算机的报告草案。
这个草案当中,提出了一种全新的存储程序的通用计算机的方案。
新的这个方案的名称叫EDVAC。
也就是离散变量的电子自动计算机。
这样一个方案出台以后,普林斯顿高等研究院, 因为当时冯.诺依曼是属于这个研究院的研究人员。
然后这个研究院就批准了让冯.诺依曼来建造这样的一台计算机。
从46年开始,普林斯顿高等研究院呢 就开始设计这样一台存储程序的计算机。
这台计算机称为IAS计算机。
那么IAS是普林斯顿高等研究院的缩写。
那么其实冯.诺依曼领导所研制的计算机 它实际上并不是第一台的存储程序计算机。
而第一台的这个计算机呢,是由英国剑桥大学在1949年完成的。
冯.诺依曼他们研制的计算机到51年才完成。
在冯.诺依曼起草的那个报告草案当中, 把整个提出来的这个计算机结构,
在后来就被称为冯.诺依曼结构,在提出来的这样一种计算机结构当中,
它最重要的思想是存储程序的 工作方式,也就是说,他们当时提出来
计算机的这个工作方式,应该是一种存储程序的工作方式。
那么什么叫存储程序的工作方式呢? 主要的思想是这样的:让计算机完成的任何的一项工作,
事先要编写成程序,然后把这个程序以及程序处理的这个数据
先要送到主存,然后启动运行,
运行以后,计算机就可以自动的取出一条一条指令,
并且取出来进行执行,就是取出指令,执行。
然后再取下条指令再执行,这样按部就班的取出指令并执行。
应该采用这样一种工作方式,而在这个取指令,执行指令的过程中,
整个过程不需要操作人员干预。
也就是说,这个程序是由一条一条指令组成的。
那么这一条一条指令的执行的过程,也就是程序执行的过程。
程序在执行的过程当中,它是完全是计算机自动完成的。
这个就是冯.诺依曼结构计算机最核心的思想。
也叫存储程序的工作方式。
所以这个里面最关键的 就是两个词,一个是程序,一个是存储。
事先要存储在计算机里面。
采用冯.诺依曼结构的计算机也被称为冯.诺依曼机器,就是Von Neumann Machine。
现在几乎所有的通用计算机都是采用这种冯.诺依曼结构的。
所以说IAS这台计算机 是现代计算机的原型机。
那么冯.诺依曼结构它的主要思想是什么呢?
就是要能够采用这种存储程序的工作方式的计算机
应该是什么样的一种结构呢?这个是 我们刚才讲的冯.诺依曼结构的计算机的这个工作方式。
这样的一种工作方式,就应该有一个主存,它事先要能够放程序和数据。
然后呢,它还要有一个部件,能够自动的 一条一条取出指令,并且执行。
所以它还要有执行指令的部件。
那么此外这个工作方式告诉我们程序是由指令构成的。
一条一条指令执行的过程也就是程序执行的过程。
那么指令实际上就是用来描述如何对数据进行处理的。
因此指令应该有处 理方式和处理的数据两部分的描述信息。
此外这样的计算机当中,还应该有一个部件能够使得程序和原始数据
能输入到计算机里面,另外还要有一个部件能够让运算的结果输出到计算机外部。
所有的这些基本上 就是一台最原始的计算机它的组成。
这就是最早的IAS计算机的结构。
我们在这个里面可以看到,它有一个主存储器。
事先应该把这个程序和数据送到存储器, 然后被启动运行。
此外还要有一个 部件能够解释这个主存里面存放的这些指令。
然后能够对这个指令进行译码,生成各种控制信号。
控制计算机进行相应的动作。
这就是控制器。
另外,对指令译码以后,要对指令进行执行, 所以这边还要有一个进行运算的电路。
要对各种运算指令进行具体的 进行运算,这种运算可以是算数运算或者是逻辑运算。
所以它还要有一个算数逻辑的运算电路。
那么运算的操作数可以来自 主存储器或者这边这个AC式累加器。
也就是上一条指令运算的结果放在累加器里面, 可以作为下一条运算指令所指定的这个运算的操作数。
这块那就是算数逻辑单元,也就是进行运算的部件。
从这我们大概可以看出,冯.诺依曼结构应该规定有运算
的电路,对指令进行译码的控制电路,有主存储器。
所有在这个计算机内部进行运算的指令和数据,要
从外部输入到计算机内部,所以要有输入部件,这个I就是
input就是输入,然后运算的结果要输出到外部,那么就有输出
部件,输出设备,output 因为这个o就是输出,output
早期的这个冯.诺依曼结构计算机规定计算机 应该由这样五大部分组成,输入部件、
输出部件、 主存、 运算器和这个控制器,
抽象出来以后就是这样的一个 图形,就是程序和数据通过输入设备
输入到主存,然后主存里面的指令,
程序当中的一条一条指令,送到控制器进行译码, 输出相应的控制信号,
就是这边这个蓝颜色的,这个控制信号, 控制这些其它的设备进行动作,
同时存储器里面的数据会送到运算器, 在控制信号的控制下进行运算,
运算的结果还是送到存储器,最终把存储器的信息也就是
运算的结果通过输出设备输出到计算机的外部,所有的这个
输入设备也好,控制器、 输出设备、 运算器、
存储器 它们的动作都是由控制器 对指令译码产生的这个控制信号进行控制的,
那么这个就是冯.诺依曼结构计算机的模型,
早期的计算机部件之间采用的是分散连接方式,
也就说这边有指令的交换,这边就有相应的这个线来传送指令。
这边有命令信息的这个传送交换就有命令性。
就是这种连结的线在部件之间是分散的,
不像现在的计算机内部,部件之间大多用总线方式相连。
那么早期的机器这种分散方式使得这个连接关系非常复杂。
冯.诺依曼结构的主要思想是这样的,
首先冯.诺依曼结构规定计算机要有 运算器、 控制器、 存储器、
输入设备、 输出设备这五大部件组成, 然后每个部件的功能就是存储器要能够存放数据,
并且也要能够存放指令,形式上指令和数据 没有任何差别,它们都是0/1序列,
但是计算机在运行指令的过程当中,它要能够区分
这一个取出来的是数据还是指令。
第二, 控制器,它要能够
自动的取出指令来执行,也就是说控制器要能够对指令进行译码,送出控制信号。
第三运算器,应能够进行加/减/乘/除四种运算,
并且还要能够进行各种与、 或、 非、 移位等等这些逻辑运算。
输入、 输出设备 主要是为了操作员和主机进行通讯。
操作员通过输入设备把程序和数据送到计算机。
或者通过输出设备把程序执行的结果送出到 计算机外部,有操作员可以看到这个运算的结果。
第三大点规定了 计算机内部是用二进制来表示指令和数据的,刚才我们看到
ENIAC 它是10进制表示信息, 而冯.诺依曼结构结构就规定
计算机内部的所有信息用0和1来表示,
那么每条指令,它分操作码部分和地址码部分,
操作码部分指出这条指令,它的操作性质
也就是说操作码部分指出指令的操作类型是做加法, 还是做减法,还是做传送,还是做跳转。
地址码部分指出了操作数它的地址, 整个的这个指令实际上就是一串0/1序列。
然后一串0/1序列构成的指令,再串起来就是一个程序,
所以最终我们可以看到这个程序,整个的就是一个0/1序列,完全是由二进制表示,
那么冯.诺依曼计算机结构的这个核心
是规定了计算机的工作方式是存储程序的工作方式,也就是我们刚才讲的
所有的这个程序以及程序处理的 数据,都要事先放到存储器里面。
然后再启动程序执行,因为已经在存储器了。
控制器可以按部就班的从存储器里面 一条一条指令取出来,然后按照顺序一条一条指令
进行执行,执行过程当中不需要操作人员的干预。
那么这样的一种工作方式就规定了计算机,它是一种自动的
一种执行程序的工作方式。
[音乐]