说到计算机的发展,就不能不提到美籍匈牙利裔学者约翰·冯·诺依曼(John Von Neumann)。冯·诺依曼带给我们的是一个集合前人思想,启迪后人深思的计算机系统的思想,他给后来的计算机研发人员指明了方向,也奠定了现代计算机快速发展的基础。计算机的运行需要两个前提:一是任务描述,即描述计算机所要完成的任务,它是以程序(或代码)方式表达;二是计算机本身的运行能力,他是任务的具体执行者。1946年,冯·诺依曼集合巴贝奇、阿达、楚泽、斯蒂比兹,还有更为重要的阿兰·图灵这些计算机天才的思想,提出了计算机处理或程序的基本模型。

为了更好的理解冯·诺依曼计算机模型,我们先来做一个简单的比喻,希望能够使我们更深入的理解计算机的基本结构。

(1)一个冯·诺依曼工厂

一台计算机其实就像一个加工厂,如图1所示。一个加工厂需要的设备是:加工机器,仓库,物流和控制室。在进行加工生产过程中,第一步是通过物流部门的货车将原材料运输到工厂,存放在仓库中;第二步是工人从仓库中把原材料搬运到加工机器中;第三步加工机器进行生产加工;第四步是工人把生产出来的产品搬运到仓库中;最后是通过物流部分的货车将产品运送出去。而在整个加工过程中,每个环节都必须通过控制室来协调安排,比如要原材料的种类和数量,加工方式,产品存放位置等。

图1加工生产流程图

(2)冯·诺依曼计算机结构

在冯•诺依曼计算机中,最主要的部件是运算器、控制器、存储器和输入输出设备组成。其中,输入输出设备就是一个工厂的物流部门,负责数据的输入和输出;运算器就是工厂的加工机器,负责数据的运算;存储器就是工厂的仓库,负责数据的存储;控制器就是工厂的控制室,负责控制其他所有部件之间的协同工作。下面我们具体的介绍一下冯•诺依曼计算机模型。

图2冯·诺依曼模型示意图

图2显示了该模型的基本组成,它有5个组成部分:内存、处理单元、输入、输出、控制单元。

1、内存

内存就是由各种门电路和锁存器组成的一个具有存储功能的电路。具有寻址空间和寻址能力两项指标,此外,内存的每个存储单元都具有一个“单元地址”,这相当于一栋楼的门号,是为了便于访问人对号入座的。而这个“单元地址”中存放的内容称为“单元内容”,“单元内容”就是存储在内存中的一串数据,它既可以表示操作指令,也可以表示需要被操作的数据。内存的作用是存储需要被执行的程序和需要被处理的数据。在内存的操作用,有读操作和写操作两种。

读操作:首先将访问内存单元的地址放入CPU的内存地址寄存器(MAR),然后发送读信号通知内存,由此,内存将该单元中存放的数据传送至内存数据寄存器(MDR)。

写操作:首先将被访问内存单元的地址放入内存地址寄存器(MAR),然后将要写入的数据放入内存数据寄存器(MDR),最后向内存发送写信号。由此,内存数据寄存器(MDR)的内容被写入内存地址寄存器(MAR)指向的单元。

2、处理单元

处理单元式处理信息的地方,它由各种各样的功能单元组成,每个功能单元又由各种各样的门电路组成。其中最简单的功能单元是ALU“算术逻辑运算单元”。ALU所能完成的功能是基本运算(如AND、SUBTRACT)和基本逻辑操作(如按位AND、OR、NOT)等。功能单元所能处理的量化大小通常称为计算机的“字长”。比如如果该计算机的功能单元能够处理的是16-bit字长的数据,则称这台计算机为16为机器。而现在普遍所用的计算机的字长通常是32bit,也称32位机器;对于专门用于计算的机器用的可能就是64位机器;而作为通信设备这些简单的处理器,可能用8为救足够了,不过这也是在发展的。

通常,在设计中会为功能单元在其附近配置少量的存储器,用于储存它最近生成的中间计算结果。例如,在(A+B)·C的计算过程中,它可能会将A+B的结果保存在内存中,但随后与C相乘之时,还要再次从内存中读出来,这显然浪费了很多时间。所以,我们就在处理单元旁边配备了临时存储空间,用来存放A+B的结果,在进行下一步乘法运算时,直接从这个存储空间中间A+B的结果取出来用就行了。这样就避免了过于频繁地访问内存,提高了运算速度。这些临时存储空间称为缓存。现在的处理器已经做到采用二级缓存,甚至三级缓存了。缓存的要求是读取数据的速度要快,所以要采用特殊材料,价格也比较昂贵,所以无法做的很大。一般缓存大小在1MB到2MB左右。

3、输入和输出单元

信息能够被计算机处理的前提是信息必须输入计算机。同样,信息被处理后的结果也必须通过显示、打印等方式输出至计算机外部。我们称这些相关的设备为输入/输出设备。输入输出设备的种类很多。其中我们通常普遍使用的输入设备有键盘、鼠标、扫描仪、读卡器等,输出设备有显示器、打印机等。而在早期,输入和输出设备都是依赖穿孔卡片,那个机器我们已经几乎没有机会看到了。

4、控制单元

控制单元所扮演的角色如同乐队的指挥,它用来控制其他所有单元之间的协同工作,是整个CPU的指挥控制中心,由指令寄存器IR(InstructionRegister)、程序计数器PC(ProgramCounter)和操作控制器0C(OperationController)三个部件组成。

指令寄存器:用以保存当前执行或即将执行的指令的一种寄存器。指令内包含有确定操作类型的操作码和指出操作数来源或去向的地址。指令长度随不同计算机而异,指令寄存器的长度也随之而异。计算机的所有操作都是通过分析存放在指令寄存器中的指令后再执行的。指令寄存器的输人端接收来自存储器的指令,指令寄存器的输出端分为两部分。操作码部分送到译码电路进行分析,指出本指令该执行何种类型的操作;地址部分送到地址加法器生成有效地址后再送到存储器,作为取数或存数的地址。

程序计数器:指明程序中下一次要执行的指令地址的一种计数器,又称指令计数器。它兼有指令地址寄存器和计数器的功能。当一条指令执行完毕的时候,程序计数器作为指令地址寄存器,其内容必须已经改变成下一条指令的地址,从而使程序得以持续运行。

操作控制器:根据指令操作码和时序信号,产生各种操作控制信号,以便正确地建立数据通路,从而完成取指令和执行指令的控制。CPU内的每个功能部件都完成一定的特定功能。信息在各部件之间传送及数据的流动控制部件的实现。通常把许多数字部件之间传送信息的通路称为“数据通路”。信息从什么地方开始,中间经过哪个寄存器或多路开关,最后传到哪个寄存器,都要加以控制。在各寄存器之间建立数据通路的任务,就是由“操作控制器”的部件来完成的。

冯诺依曼计算机设备,科学网—计算机学习漫谈(10)——一台冯·诺依曼机器 - 陈钊的博文...相关推荐

  1. python 数据去重_科学网—python学习——根据条件提取数据,并去重 - 李立的博文...

    [Python字符串提取] 摘要:根据要求进行字符串的提取,并去重 导入分析所需的库import pandas as pd 构造数据集 as1 = pd.DataFrame({'a':[1,2,3,4 ...

  2. 计算机系歌,科学网—计算机之歌 - 刘钢的博文

    在北京首都师范大学曾经召开了一次国际信息科学大会.实际上,是三个会议并行召开的.由于当时正值暑假,所以与会者并不是很多.华中科技大学作为教育部的一个基地,花了不少的钱来办这个会.我记得会议结束吃最后一 ...

  3. 计算机技术狂人叫什么,科学网-计算机科技创新需要狂人思维模式-姜咏江的博文...

    计算机科技创新需要狂人思维模式 "世界级"创新的科技发明,开始总是不被人认同和理解,这是正常的事情.许多大科学家出道之初,周围的人常称其为"狂人",对其&quo ...

  4. 计算机博士要学数学吗,科学网—计算机博士与数学 - 马飞的博文

    计算机博士,研究过程中需要大量的数学公式做模型,进行推导:到了博士阶段的研究,基本上都是利用数学公式进行开展工作:即使编程能力再强,没有公式做约束,也是没有办法进行开创性的工作:数学公式之所以重要,因 ...

  5. 基础数学博士计算机专业,科学网-计算机博士与数学-马飞的博文

    计算机博士,研究过程中需要大量的数学公式做模型,进行推导:到了博士阶段的研究,基本上都是利用数学公式进行开展工作:即使编程能力再强,没有公式做约束,也是没有办法进行开创性的工作:数学公式之所以重要,因 ...

  6. 计算机的科技创新,科学网—计算机科技创新需要狂人思维模式 - 姜咏江的博文...

    计算机科技创新需要狂人思维模式 "世界级"创新的科技发明,开始总是不被人认同和理解,这是正常的事情.许多大科学家出道之初,周围的人常称其为"狂人",对其&quo ...

  7. 文本框赋值guide matlab,科学网-Matlab: 学习GUI (使用GUIDE时需注意的几个问题)-刘磊的博文...

    在博文<Matlab:学习GUI(一个简单的例子)>(介绍的方法是完全用代码来建立一个GUI,实际上Matlab本身有一个设计GUI的交互系统--GUIDE,用户可以使用该系统更方便的建立 ...

  8. 计算机设计核心思想,科学网—计算机设计的两种理念,颠覆os的计算机 - 姜咏江的博文...

    计算机设计的两种理念 姜咏江 关于图灵和冯·诺伊曼计算机,我们是否可以总结为图灵的计算机思想由冯·诺伊曼等人具体实现了?不要让计算机历史上那些说不十分清楚的问题,耽误了我们今天的行程. 在计算机体系结 ...

  9. 语言学与计算机交叉学科,科学网—计算机与信息科学交叉研究领域:X-informatics (转载2篇) - 章成志的博文...

    在"第二届中美计算机科学峰会"(博主注: 2008年7月底)上,伊立诺伊大学阿贝纳香槟分校的马克·斯厄尔(Marc Snir) 教授作了题为"Computer & ...

  10. 我国计算机科学的发展源头要追溯到几年前,科学网—计算机新技术革命要求必须从源头做起 - 姜咏江的博文...

    在科研界有一句话,叫"站在巨人的肩膀上".在人类知识积累的过程中,这句话是真理.但这句话用的不是地方,也会产生运用不当的谬误,这就叫"具体问题,具体分析".在目 ...

最新文章

  1. QOS的qmtoken 1
  2. Word提供的【样式和格式】设计!
  3. python相关软件安装
  4. xctf secret galaxy_三星SMARTTHINGS FIND正式发布 可帮助轻松查找GALAXY设备
  5. WordPress的Kyma plugin HTML发送的connect请求是怎么投递到PHP的
  6. android 屏幕旋转不重新加载,Android webview旋转屏幕导致页面重新加载问题解决办法...
  7. python怎么读数据库的数据_python从数据库读取出来的字典怎么更加方便的插入数据库...
  8. java中soo_soo_ - SegmentFault 思否
  9. idea中报文件Not Found
  10. 判断response.data是否为空
  11. Video 视频播放防作弊和禁止下载
  12. 力扣-102. 二叉树的层序遍历
  13. 苹果Mac超轻量级菜单栏应用程序:Micro Snitch
  14. TensorFlow 安装
  15. JS逆向|JavaScript代码改写成Python代码之小试牛刀
  16. 【黑马-SpringCloudAlibaba】学习笔记09-Nacos Config--服务配置
  17. vue实现标题导航,tab选项卡(一看就会)
  18. telnet远程登录服务器端口,Telnet服务器远程登录过程
  19. 服务器黑屏只显示鼠标是什么意思,电脑黑屏只显示鼠标怎么办
  20. C++ 输入输出(cin cout)加速/效率优化

热门文章

  1. vue echarts饼状图内部显示百分比
  2. 各银行支付/各种支付平台/php对接支付接口心得/php h5支付接口对接
  3. 【工程光学】平面与平面系统
  4. 如何改变图片大小-前端入门
  5. 程序员的自我修养之数学基础11:期望、方差、常见分布(均匀分布、二项分布、泊松分布、正态分布)
  6. 微信小程序——1、搭建自己的Https服务器
  7. 如何获取用户的微信openid
  8. excelJs 单元格背景颜色填充
  9. wifi 频段表_wifi频段如何设置为5ghz
  10. C语言不使用中间变量交换两个变量值