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

Linux——冯 • 诺依曼体系结构

目录

  • 一、冯•诺依曼体系结构原理
  • 二、内存提高冯•诺依曼体系结构效率的方法
  • 三、当用QQ和朋友聊天时数据的流动过程
  • 四、关于冯诺依曼
  • 五、总结


我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系
在这里插入图片描述
流程:输入设备——存储器——控制器——运算器——存储器——输出设备

一、冯•诺依曼体系结构原理

截至目前,我们所认识的计算机,都是由一个个的硬件组件组成

在这里插入图片描述

我们使用计算机是为了解决生活中的一些事情,具体解决,将我们需要解决的事转换成数据输入计算机中,所以计算机就必须有输入设备。解决后需要让我们得知结果让我们看到,所以计算机必须要有输出设备。计算机通过输入设备得到数据,数据在计算机当中进行一系列的运算后,通过输出设备进行输出,于是就得到了以下流程图。
在这里插入图片描述
但是计算机当中只有算术运算功能和逻辑运算功能是不够的,还需要有控制功能,控制何时从输入设备获取数据,何时输出数据到输出设备等。对应到C语言当中,算术运算就完成一系列的加减乘除,而逻辑运算就对应于一系列的逻辑与逻辑或等,控制功能就对应于C语言当中的判断、循环以及各个函数之间的跳转等等。

在这里插入图片描述后来就将这个具有运算功能以及控制功能的这个模块称为中央处理器,简称CPU。

但是输入设备和输出设备相对于中央处理器来说是非常慢的,于是在当前这个体系整体呈现出来的就是,输入设备和输出设备很慢,而CPU很快,那么最终整个体系所呈现出来的速度将会是很慢的。
所以当前这个体系结构显然是不合适的,于是输入设备和输出设备不能直接与CPU进行交互,而在这中间加入了内存。

在这里插入图片描述

内存有个特点,比输入设备和输出设备要快很多,但是比CPU又要慢。现在内存就处于慢设备和快设备之间,是一个不快也不慢的设备,能够在该体系结构当中就起到一个缓冲的作用。
现在该体系的运行流程就是:用户输入的数据先放到内存当中,CPU读取数据的时候就直接从内存当中读取,CPU处理完数据后又写回内存当中,然后内存再将数据输出到输出设备当中,最后由输出设备进行输出显示。
于是就形成了最终的冯诺依曼体系结构
在这里插入图片描述注意: 这里存储器只是内存,不包括外存。

二、内存提高冯•诺依曼体系结构效率的方法

我们平时写的C代码形成的二进制可执行程序它就是一个文件,相当于是在磁盘上的一个文件,一个文件要运行必须先加载到存储器,磁盘当作输入设备,文件到存储器时,CPU可能正在计算其它的计算,计算完后,开始执行我们磁盘上的代码,相当于把代码提前预先加载到存储器中,所以处理器在运行期间只是刚开始加载了一下,之后都是CPU和存储器在交互。CPU的计算和存储器的加载可以同时进行,就由串行变成并行,从而提高了运算的效率。

内存具有数据存储的能力。虽然内存的大小只有4G/8G,但是既然内存有大小,那么它就有预装数据的能力,而这就是提高该体系结构效率的秘诀。

当一个数据正在被访问时,那么下一次有很大可能会访问其周围的数据。所以当CPU需要获取某一行数据时,内存可以将该行数据之后的数据一同加载进来,而CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据。

输出数据的时候也一样,CPU处理完数据后直接将数据放到内存当中,当输出设备需要时再在内存当中获取即可,这也就有了我们平常所说的缓冲区的概念。例如,缓冲区满了才将数据打印到屏幕上,使用fflush函数将缓冲区当中的数据直接输出之类的,都是将内存当中的数据直接拿到输出设备当中进行显示输出。

三、当用QQ和朋友聊天时数据的流动过程

要使用QQ,首先需要联网,而你和你的朋友的电脑都是冯诺依曼体系结构,在你向朋友发送消息这个过程中,你的电脑当中的键盘充当输入设备、显示器和网卡充当输出设备,你朋友的电脑当中的网卡充当输入设备、显示器充当输出设备。
在这里插入图片描述
刚开始你在键盘当中输入消息,键盘将消息加载到内存,此时你的显示器就可以从内存获取消息进而显示在你自己的显示器上,此时你就能在你自己的电脑上看到你所发的消息了。
在键盘将消息加载到内存后,CPU从内存获取到消息后对消息进行各种封装,然后再将其写回内存,此时你的网卡就可以从内存获取已经封装好的消息,然后在网络当中经过一系列处理(这里忽略网络处理细节),之后你朋友的网卡从网络当中获取到你所发的消息后,将该消息加载到内存当中,你朋友的CPU再从内存当中获取消息并对消息进行解包操作,然后将解包好的消息写回内存,最后你朋友的显示器从内存当中获取消息并显示在他的电脑上。
在这里插入图片描述

四、关于冯诺依曼

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

同种设备在不同场景下可能属于输入设备,也可能属于输入设备。

我们经常说CPU当中有寄存器,实际上寄存器不仅仅在CPU当中存在,在其他外设当中也是有寄存器的。例如,当我们敲击键盘时,键盘是先将获取到的内容存储在寄存器当中,然后再通过寄存器将数据写入内存当中。

它们都是独立的个体,在物理层面上,各个硬件单元之间是通过总线连接的,外设与内存之间的总线叫做IO总线,内存与CPU之间的总线叫做系统总线。

五、总结

在这里插入图片描述


http://www.kler.cn/a/521467.html

相关文章:

  • 受击反馈HitReact、死亡效果Death Dissolve、Floating伤害值Text(末尾附 客户端RPC )
  • 深度学习的应用
  • 后端token校验流程
  • 前端-Rollup
  • java——继承
  • 51单片机开发:串口通信
  • 834 数据结构(自用)
  • 26.日常算法
  • Mybatis——sql映射文件中的增删查改
  • Maven运行任何命令都报错“Internal error: java.lang.ArrayIndexOutOfBoundsException”
  • 作业四:简述mysql 主从复制原理及其工作过程,配置一主两从并验证。
  • 科普篇 | “机架、塔式、刀片”三类服务器对比
  • 理解离散傅里叶变换(三.复数) 2025 1 26
  • leetcode 2412. 完成所有交易的初始最少钱数
  • 【前端】Electron入门开发教程,从介绍Electron到基础引用以及部分深度使用,附带常见的十个报错问题的解决方案和代码优化。
  • 【自然语言处理(NLP)】从零实现循环神经网络RNN、Pytorch实现循环神经网络RNN
  • 消息队列篇--通信协议篇--MQTT(通配式主题,消息服务质量Qos,EMQX的Broker,MqttClient示例,MQTT报文等)
  • 强化学习 - 基于策略搜索和策略优化: 高斯策略
  • 【Redis】Redis入门以及什么是分布式系统{Redis引入+分布式系统介绍}
  • RKNN_C++版本-YOLOV5
  • UE求职Demo开发日志#12 完善击杀获得物品逻辑和UI
  • 论文阅读 AlphaFold 2
  • 高效流式大语言模型(StreamingLLM)——基于“注意力汇聚点”的突破性研究
  • 25_.NET控制台服务器配置
  • 人物轮廓提取与人脸识别:原理、实现与应用
  • 论文阅读(五):乳腺癌中的高斯图模型和扩展网络推理