当前位置: 首页 > news >正文

【Linux】冯诺依曼体系结构

冯诺依曼体系结构

  • 一、计算机结构体系来源
  • 二、冯诺依曼体系结构
  • 三、冯诺依曼体系结构中的数据流动


一、计算机结构体系来源

研制电子计算机的想法产生于第二次世界大战期间,主要用来进行弹道计算,在"时间就是胜利"的战争年代,迫切需要一台能够快速计算出弹道的机器。在这样的形势背景下,世界上第一台电子计算机ENIAC于1946 年2月14 日被研制出来。但由于 ENIAC 的研制主要是出于军事上的需要,其存在两大缺点:一是没有真正的存储器;二是控制不是自动进行的,每次都需要以人工布线的方式进行,耗时长,故障率高。其运算速度受到了人工数据的输入速度的限制,后期冯.诺依曼对其进行了改进,提出了基于存储程序的概念:

将指令以二进制代码的形式事先输入计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按该程序的规定顺序执行其他指令,直至程序执行结束。

当采用程序存储概念以后的计算机,其运算速度得到了明显提升,冯·诺依曼体系结构也渐渐从计算机的发展中脱颖而出,成为了主流的计算机体系结构。

在这里插入图片描述

二、冯诺依曼体系结构

冯诺依曼体系结构由五大设备组成,分别是: 输入设备, 输出设备,运算器, 控制器和存储器,它们之间的关系如下:

  1. 输入设备是负责将数据和程序输入到计算机的设备,将信息转换为机器能识别的形式,即二进制数据,是用户和计算机系统之信息交换的主要装置。常用的输入设备有键盘、鼠标等。
  2. 输出设备负责将计算机处理后的结果输出计算机,主要用于数据的输出,是人与计算机交互的一种部件。通过输出设备,可以将各种计算结果数据或信息通过多种形式表示出来如数字、字符、图像、声音、视频等形式。常用的输出设备有显示器、打印机等。
  3. 运算器是运算逻辑单元,主要负责执行计算机中各种算木运算和逻辑运算操作。
  4. 控制器从存储器设备读取和解析相关指令,比如加减乘除运算指令,然后指挥程序运行。
  5. 存储器是计算机的记忆和存储部件,用来存放程序、数据等信息。计算机中的全部信息包括输入的原始数据、程序软件、经计算机初步加工后的中间运行结果和最终处理结果都有储在存储器中,并在控制器的控制下在指定的位置取出或存入信息。

存储器分为内存储器和外存储器两类。内存储器简称内存,存取速度快、容量小、价格高主要用来暂存CPU中的运算数据。这里冯诺依曼中的存储器是指内存储器。

在这里插入图片描述
其中这里的存储器相当重要,在早期没有存储器时,由于计算机CPU处理速度很快,但是人们的输入效率太低,造成了计算机的工作效率低下,有了内存的存在,我们可以对数据进行预加载,CPU 以后在进行数据计算的时候,就不需要访问外设了,直接从内存中读取就可以了。从而大大提高了计算机的工作效率

注意事项:

  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  • 一句话,所有设备都只能直接和内存打交道。

三、冯诺依曼体系结构中的数据流动

这里我们以QQ为例,简单的了解一下在冯诺依曼体系结构下,软件的数据是怎么流动的。

在这里插入图片描述
首先我们打开对话窗,用输入设备键盘进行输入“你好”,输入之后,我们的数据便被加载进了内存,等待CPU的处理,然后CPU从内存中读取待处理的数据,CPU对我们输入的数据进行处理加密后,返回给内存,内存再通过特定的刷新机制输出到输出设备,这里传输到输出设备是两个动作,第一是把你输入的消息刷新显示在你自己的显示器上,第二是把数据通过网卡发送到网络里,经过网络的处理,另一台计算机也从网卡里面拿到数据(这说明网卡即是输入设备又是输出设备),但是拿到的数据暂时还无法使用,需要先加载到内存,然后由,CPU读取数据进行解密处理,解密处理后返回给内存,然后内存将数据传输给输出设备显示器,这样两台电脑就完成了QQ的聊天通讯了。

http://www.lryc.cn/news/39837.html

相关文章:

  • 【小白】git是什么?gitee和git和github的关系?
  • UDS 14229 -1 刷写34,36,37服务,标准加Trace讲解,没理由搞不明白
  • 【Android -- 软技能】聊聊程序员的软技能
  • 【Java学习笔记】27.Java 抽象类
  • Vite4 + Vue3 + vue-router4 动态路由
  • MS(mbed l432KC)-->速通9个lab详细解析[5]
  • XXE漏洞复现
  • 初识C++需要了解的一些东西(2)
  • 全国程序员薪酬大曝光!看完我酸了····
  • 改进YOLO系列 | CVPR2023最新Backbone | FasterNet 远超 ShuffleNet、MobileNet、MobileViT 等模型
  • Nginx常见用法
  • MySQL存储引擎和日志管理
  • Arduino 驱动DS1307时钟模块使用介绍
  • 为什么 Python 没有 main 函数?
  • 【无标题】使用Bibtex4word 整理毕业论文参考文献
  • 19--网络API(java版)
  • ElasticSearch - 分片内部原理之动态更新索引、近实时搜索、持久化变更、段合并
  • 模拟数据采集卡之ADCTDC 模拟时间/数字转换器组合应用选型指南
  • R语言编程基础
  • 2023-03-15:屏幕录制并且显示视频,不要用命令。代码用go语言编写。
  • STM32外设-DMA
  • 【面试题】面试官:如果后端给你 1w 条数据,你如何做展示?
  • 第十二届蓝桥杯省赛详解
  • ssh创建秘钥对
  • JS中sort()方法返回值?
  • 07从零开始学Java之如何正确的编写Java代码?
  • Python学习笔记14:网络编程
  • 初入了解——什么是VUE
  • 代码规范(C++)
  • React教程详解四(hooks、pureComponent、Context通信、错误边界、children props与render props)