在第一台电子计算机(Electronic Numerical Integrator And Computer,ENIAC)设计与研制的过程中,他们的设计者曾向美国普林斯顿大学高等研究院(Institute of Advanced Study,IAS)的科学家冯·诺依曼(von Neumann)进行过咨询。ENIAC投入使用后,冯·诺依曼曾到现场参观,对ENIAC表现出强烈的兴趣。在对ENIAC存在的不足(ENIAC是专用计算机,它的功能是由电路连线来决定的,改变功能时,需要人为地改变电路连线)进行深入思考的基础上,冯·诺依曼等人于1946年6月发表了一篇旨在构建一台通用计算机的技术报告《关于电子计算装置逻辑结构初探》。这份报告提出了基于“存储程序”控制的“离散变量自动电子计算机(Electronic Discrete Variable Automatic Computer,EDVAC)”的设计方案。

“存储程序”的思想是:计算机的用途和硬件完全分离。硬件采用固定性逻辑,提供某些固定不变的功能。通过编制不同的程序来满足不同用户对计算机的应用需求。

依照这个思想,在计算机上求解一个问题,需要将求解该问题的过程分解成一系列简单、有序的计算步骤,一个步骤由计算机提供的一条计算机指令(Instruction)完成。然后将这些有序的计算步骤一一对应成计算机能够识别并可执行的指令—汇总在一起,就形成所谓的程序,并存储在计算机中。计算机通过逐条、顺序执行程序中的指令来完成问题的求解。“存储程序”思想体现了计算思维的核心概念—自动化。

根据《关于电子计算装置逻辑结构初探》设计的“冯·诺依曼计算机”的特点如下。

1)具备五大功能:数据存储、操作判断与控制、数据处理、数据输入和数据输出。对应五个功能部件:存储器(Memory)、控制单元(Control Unit,CU)、算术逻辑运算单元(Arithmetic Logic Unit,ALU)、输入单元(Input Unit)和输出单元(Output Unit),如图1-2所示。图1-2中,有两股信息在流动。一股是控制流(即操作命令),它从CU发出,分散流向各部件;另一股是数据流(包括指令和地址),它在CU的控制下,从一个部件流到另一个部件。

2)存储器由一组一维排列、线性编址的存储单元组成,每个存储单元的位数是相等且固定的,存储单元按地址访问。这是最简单、最易于实现的信息存储与查找方案,就如同一排平房,房间大小都是一样的,按照房间号查找房间,房间号逐间递增。

3)“程序”由一条一条的指令有序排列而成,而指令由操作码和地址码两部分组成。操作码规定了该指令的操作类型(即功能),地址码指示存储操作数和运算结果的存储单元地址。操作数的数据类型由操作码来规定,操作数可能是定点数、浮点数、双精度浮点数、十进制数、逻辑数、字符或字符串等。

4)指令和数据均采用二进制表示,并以二进制形式进行运算。二进制的计算规则是最简单的,加法仅有4种:0 +0=0,0 + 1=1,1 + 0=1,1 + 1=10。

把纷繁复杂的信息抽象成0/1,这是计算机的根,是计算机的哲学,是计算思维核心概念“抽象”的具体体现—信息符号化,符号数字化,数字0/1化。

5)为了简化计算机的控制与组成,程序(指令)与数据同等地、不加区分地存储在同一个存储器中,但可以从时间和空间上,将它们区分开。在取指周期中,从存储器流向控制器的是指令;在执行周期中,存储器与运算器交换的是数据。

6)为了“逐条、顺序执行程序中的指令”, 冯·诺依曼提出了一个极易实现的解决方案:设置一个“程序计数器(Program Counter,PC)”来指示下一条将要执行的指令的地址。在一般情况下,每执行完一条指令,PC就会自动加1,以指向下一条指令的存储单元。

当然,为了赋予计算机更多的“灵性”,PC的值也可以通过执行特殊的指令来修改,从而达到改变指令执行顺序的目的。这样,执行指令的顺序就不受限于指令存储的顺序了。

不过,尽管冯·诺依曼非常聪明,冯·诺依曼计算机的结构还是存在一些问题,后来人们对它进行了改进和发展—大学,止于至善!

例如,由于以ALU为中心,输入/输出单元与存储器之间的数据传送都要经过ALU,这使得ALU无法专注于运算,低速的输入/输出和高速的运算不得不相互等待,串行工作。因此,“冯·诺依曼计算机”很快就被改进成以存储器为中心(如图1-3所示)。这样,输入/输出设备就可以与运算器并行工作,输入设备也可与输出设备并行工作,提高了设备的效率和利用率。同时这使得计算机五个功能单元的互联更加简单。

时至今日,冯·诺依曼计算机结构经历近七十年,依然占据统治地位。这是为什么呢?

说到底,冯·诺依曼的最大贡献就是将计算机系统分为五个部件并确定了这五个部件的互联结构。在考虑到ALU既需要从存储器中读取数据,又需要将运算结果写回到存储器,请读者自行设计一个计算机五个部件的互联结构,看看能否比图1-3更简单。

抽象起来,“冯·诺依曼计算机结构”就是“以一个部件为中心,实现五个部件互联的星形结构”。这样实现的“五个部件互联”是最简单的、连接链路也是最少的。由于外围的四个部件只能与中心部件进行数据通信,而且有些数据通路还是单向的。进而冯·诺依曼计算机所需要的数据传送功能也是最少的、最简单的。

综上所述,“冯·诺依曼计算机”可以概括为:用最简单、最易于实现的思想(二进制及其运算规则)来表示数据并实现运算,用最简单的互联结构来组成一台计算机。

这不仅体现了计算思维,还很好地体现了“简单就是美”的工程哲学理念!

诺依曼计算机组成,1.1.2 冯·诺依曼计算机模型相关推荐

  1. 网络位置可以看到另一个人的电脑_计算机组成原理(一)- 冯·诺依曼体系结构...

    1 计算机的基本硬件组成 早期,DIY一台计算机,要先有三大件 CPU 内存 主板 1.1 CPU 计算机最重要的核心配件,中央处理器(Central Processing Unit). 计算机的所有 ...

  2. 非冯诺依曼体系计算机,一种新非冯·诺依曼计算机体系结构.pdf

    一种新非冯·诺依曼计算机体系结构 第26 卷 第10 期 北 京 理 工 大 学 学 报 Voi. 26 No. 10 穗 趟 魁 手 此 均 开 区 婉 糟 幻 坟 洗 补 丸 谋 赘 害 养 隐 ...

  3. 计算机组成原理-入门篇-01冯·诺依曼体系结构

    1. 冯·诺依曼体系结构 计算机祖师爷之一冯·诺依曼(John von Neumann)提出的冯·诺依曼体系结构(Von Neumann architecture),也叫存储程序计算机.什么是存储程序 ...

  4. 根据冯诺依曼原理 计算机分为哪五大部件,①冯·诺依曼计算机结构分为哪五大部分?...

    输入设备.运算器.控制器.存储器.输出设备. 冯.诺依曼计算机的工作原理,"存储程序控制"原理的基本内容: 1.采用二进制形式表示数据和指令. 2.将程序(数据和指令序列)预先存放 ...

  5. [今日名人回顾]计算机之父—冯·诺依曼

    冯·诺伊曼,著名美籍匈牙利数学家.1903年12月3日生于匈牙利布达佩斯的一个犹太人家庭 冯·诺依曼的父亲麦克斯年轻有为.风度翩翩,凭着勤奋.机智和善于经营,年轻时就已跻身于布达佩斯的银行家行列.冯· ...

  6. 计算机之父 匈牙利“唯一的天才” 冯·诺依曼

    读书时,身边总有一些学霸让人又敬又恨.然而和冯诺依曼接触过的人都会发现: 天才只有诺依曼一个 . 天才童年 约翰·冯·诺依曼出生在匈牙利首都布达佩斯的一个犹太人家庭,他的父亲是一位小有成就的银行家. ...

  7. 计算机之父冯·诺依曼

    约翰·冯·诺依曼 约翰·冯·诺依曼(JohnVonNouma,1903--1957),美藉匈牙利人,1903年12月28日生于匈牙利的布达佩斯,父亲是一个银行家,家境富裕,十分注意对孩子的教育.冯·诺 ...

  8. 冯.诺依曼体系结构对计算机发展的限制

    冯 . 诺依曼体系结构对计算机发展的限制 刘爱贵 ( 高能物理研究所计算中心 北京   2003年) 摘要 :    本文简单介绍了传统冯 . 诺依曼体系结构的原理和特点,从计算模型和存储模型两个方面 ...

  9. 冯 . 诺依曼体系结构对计算机发展的限制

    冯 . 诺依曼体系结构对计算机发展的限制 刘爱贵 ( 高能物理研究所计算中心 北京   2003年) 摘要 :    本文简单介绍了传统冯 . 诺依曼体系结构的原理和特点,从计算模型和存储模型两个方面 ...

  10. 冯·诺依曼--数学奇才计算机之父

    约翰·冯·诺依曼 ( John Von Nouma,1903-1957) 美藉匈牙利人,1903年12月28日生于匈牙利的布达佩斯,父亲是一个银行家,家境富裕,十分注意对 孩子的教育.冯·诺依曼从小聪 ...

最新文章

  1. 使用php+swoole对client数据实时更新
  2. centos下部署tomcat详解
  3. tensorflow中使用tf.ConfigProto()配置Session运行参数GPU设备指定
  4. 使用GoLand创建并运行项目
  5. jquery中css()与animate()
  6. nvivo12安装包下载
  7. 膜拜高手!Python竟然开发命令行版网易云音乐!
  8. 微信特殊字符php,PHP方法处理微信昵称特殊符号过滤
  9. 能否被2整除引发的思考
  10. swapidc不能连接到主机_kangle easypanel对接SWAP IDC虚拟主机销售平台完整教程 (linux)...
  11. 注册CSDN七年才发布第一篇博文是什么感觉
  12. RxJava 学习笔记(八) --- Combining 结合操作
  13. 红米K30S至尊纪念版和小米10至尊纪念版的区别
  14. billu_b0x靶场通关
  15. 基于TensorRT 5.x的网络推理加速(python)
  16. 最怕你不甘平庸,却又不去行动!
  17. Towards End-to-End Lane Detection: an Instance SegmentationApproach
  18. python测试理论-9-6
  19. 虽然分模块了,但是 mapActions 写法,照样可用
  20. 自适应控制——仿真实验二 用Narendra方案设计模型参考自适应系统

热门文章

  1. 我从停电一个月中学到了什么
  2. 屏幕使用时间 不能申请延长_屏幕时间限制什么都不教我们的孩子
  3. oracle如何根据ID恢复部分数据,三种方法找回Oracle数据库误删除的数据
  4. 解决论文写作排版中,两端对齐导致文字间距被word补过大的问题
  5. Linux (centos7)安装字体
  6. windows命令行关闭已占用的端口
  7. ACM常见问题之【三角形的外心】
  8. 微信小程序播放音频,ios静音状态下无声音、音频播放创建多个等问题
  9. HLOJ 1936 铺满方格
  10. CreateEvent