冯·诺依曼结构,让每一位学习计算机系统基础的学生印象深刻,因为它是现代计算机的基础,是计算机系统知识架构中所绕不开的重要组成部分。计算机系统基础的学习,也从冯诺依曼结构开始。

世界上第一台通用电子计算机ENIAC

故事要从1946年开始,那时,为解决复杂的弹道计算问题,宾夕法尼亚大学研制出了世界上第一台通用电子计算机ENIAC(Electronic Numerical Integrator And Computer),它有如下特点:

  1. 占地170平方米,重达30吨 由18000多个电子真空管组成,耗电160千瓦
  2. 每秒可完成5000次加法
  3. 可用于进行平方,立方,sin,cos等运算
  4. 用十进制表示信息并运算 采用手动编程,通过设置开关和插拔电缆来实现
    ENIAC计算机图片
    这台机器正式运行到1955年10月2日,十年间共运行了80223个小时

冯·诺依曼的故事

冯·诺依曼(1903年12月28日-1957年2月8日)匈牙利裔美籍数学家,计算机科学家,物理学家。

  • 1944年冯·诺依曼参加原子弹的研制工作,其中涉及到了极为复杂的问题
  • 1944年夏,冯·诺依曼巧遇美国弹道实验室的军方负责人戈尔斯坦,他正在参与ENIAC的研制工作
  • 冯·诺依曼被戈尔斯坦介绍进入ENIAC研制组,由于ENIAC存在相应的问题(如没有存储器),1945年,冯·诺依曼以“关于EDVAC的报告草案”为题,起草了长达101页的总结报告,发表了全新的“存储程序通用计算机方案”——即EDVAC
  • 冯·诺依曼所在的普林斯顿高等研究院(IAS)批准其依照该方案建造计算机

现代计算机的原型

1946年起,IAS开始设计“存储程序”计算机,1951年完成,其被称为IAS计算机(ps:它不是第一台存储程序计算机,第一台存储程序计算机是由1949年英国剑桥大学所完成的EDSAC)

在冯·诺依曼提出的“存储程序通用电子计算机方案”的总结报告中,其提出的结构被称为冯诺依曼结构,而冯诺依曼结构最重要的思想就是“存储结构(Stored-program)”

存储结构的工作方式为:任何计算机完成的工作都要先被编写成程序,然后将程序和原始数据送入主存并启动执行。一旦程序被启动,计算机应在不需操作人员干预下,自动完成逐条取出指令和执行指令任务。

冯·诺依曼结构计算机也成冯·诺依曼机器,几乎现代所有通用计算机都采用冯·诺依曼结构,因此IAS计算机是所有计算机的原型机。

冯·诺依曼结构:

  • 主存—存放程序和数据
  • 有一个自动逐条取指令的部件
  • 有一个具体执行指令的部件
  • 程序由指令构成
  • 指令描述如何对数据进行处理
  • 有将程序和原始数据输入计算机的部件
  • 有将运算结果输出计算机的部件

IAS计算机结构如下:
IAS计算机结构
分解结构如下:
一、控制器
在这里插入图片描述
二、主存储器:
在这里插入图片描述
三、运算器:
在这里插入图片描述
四、输入设备/五、输出设备:
在这里插入图片描述
IAS结构抽象示意图
在这里插入图片描述
数据输入输出的流程大致为:程序和数据通过输入设备输入到存储器存储器内一条一条指令送入控制器进行译码,输出相应的控制信号控制所有其他设备动作,同时存储器里面的数据送到运算器,在控制信号的控制下进行运算,运算的结果还是送到存储器,最终把存储器的信息,即运算的结果送到输出设备,通过输出设备输出到计算机的外部。

早期,部件之间采用分散方式相连
现在,部件之间采用主线方式相连

总结

冯·诺依曼结构的主要思想:

1、计算机应由运算器、控制器、存储器、输入输出设备五个基本部件组成

2、各基本部件的功能为:

  • 存储器不仅存放数据,而且还可以存放指令,形式上两者没有区别(都是01序列),但计算机应能区分数据还是指令
  • 控制器应能自动取出指令来执行
  • 运算器应能进行加/减/乘/除四种基本运算,并且能进行一些逻辑运算和附加运算
  • 操作人员可通过输入输出设备和主机进行通信

3、内部以二进制表示指令和数据(ENIAC是十进制表示指令和数据,而IAS计算机采用的是二进制),每条指令由操作码和地址码两部分组成。操作码指出指令的操作类型(例如加法、减法、传送、跳转等),地址码指出操作数的地址。一个指令实际上是由一串01序列组成,每串01序列串起来,就组成了一个程序,最终会发现整个程序就是一个01序列。

4、采用“存储程序”的工作方式

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐