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

冯·诺依曼体系结构

文章目录

    • 冯·诺依曼体系结构
      • 1. 各部分介绍
      • 2. 数据运算处理流程
      • 3. 疑问:为什么要存储器?输入输出设备直接与CPU交互不行吗?
      • 5. 解释实例:用QQ和朋友聊天时数据的流动过程


冯·诺依曼体系结构

1. 各部分介绍

我们常见的计算机,如笔记本电脑。我们不常见的计算机,如服务器,基本上都遵循冯诺依曼体系。

冯·诺依曼体系结构如图:
在这里插入图片描述

可以看到,结构中包含以下部分:

  • 输入设备:如键盘、鼠标、摄像头、麦克风、磁盘、网卡……
  • 输出设备:如显示器、播放器硬件、磁盘、网卡……

💡:输入输出设备就是我们耳熟能详的“外设”,有些硬件既可以做输入设备又可以做输出设备,如网卡和磁盘

  • 存储器:指的是内存
  • 运算器:对我们的数据进行计算任务(算术运算和逻辑运算)
  • 控制器:对我们的计算机硬件流程进行一定的控制

💡:运算器+控制器+寄存器统称为中央处理器,也就是CPU

注意:各个部分都是独立的个体

要使得各个硬件单元可以互相配合发挥功能,必须用“线”给它们链接起来,这个线被称作总线。
总线又分为两类:

  • 系统总线:CPU与存储器之间的总线
  • IO总线:输入输出设备与存储器之间的总线

2. 数据运算处理流程

输入设备得到输入的数据,会将数据缓存给存储器内存中,然后交给CPU进行运算处理,将处理好的数据返还给存储器内存,最后存储器内存将数据交给输出设备,这样我们就可以在输出设备上得到计算机处理后的数据了。

这也就是是为什么我们之前运行的所有程序都必须要先加载到内存中运行的原因。这都是冯诺依曼体系结构所规定的。

3. 疑问:为什么要存储器?输入输出设备直接与CPU交互不行吗?

存储器是冯诺依曼体系结构中必不可少的,它地位甚至高于CPU,是冯诺依曼体系结构的核心。

事实上,硬件的数据传输速率与存储容量是成反比的,容量越大,速度越慢,离CPU越远。另外,硬件离CPU越远,交互的效率也越差。
存储金字塔如图:
在这里插入图片描述

以磁盘与CPU直接交互为例:
磁盘是金字塔的底层,而CPU的寄存器是金字塔的顶端。

这时候有朋友会说:CPU的速度是顶级的呀,那效率中和起来应该也还可以吧?

实则不然,根据木头原理,整个体系结构所呈现的速度由最慢的硬件所决定。
在这里插入图片描述

因此,冯诺依曼引入了存储器,内存在金字塔的腰部,它的速度比硬盘快,又比CPU慢,速度是人们可以接受的,并且存储容量又恰到好处,能够在该体系结构当中就起到一个缓冲的作用。

这时候又有朋友会说:不是说因为木头原理,整个体系结构所呈现的速度由最慢的硬件所决定吗?那体系结构所呈现的速度不还是应该硬盘的吗?

其实内存的作用是不仅如此的,它有预装数据的能力,而这就是提高该体系结构效率的秘诀。
如此,CPU处理数据和内存加载数据是可以同时进行的,这样下次CPU就可以直接从内存当中获取数据。达到以内存的速度,让CPU直接拿数据的效果。

内存与输出设备的交互与输入设备同理。

【注意】

  • 这⾥的存储器指的是内存
  • 不考虑缓存情况,这⾥的CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)
  • 外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取。

⼀句话,所有设备都只能直接和内存打交道。

5. 解释实例:用QQ和朋友聊天时数据的流动过程

对冯诺依曼的理解,不能停留在概念上,要深⼊到对软件数据流理解上,请解释,从你登录上qq开始和某位朋友聊天开始,数据的流动过程。
从你打开窗⼝,开始给他发消息,到他的到消息之后的数据流动过程。如果是在qq上发送⽂件呢?

  1. 先明确我和我的朋友在完成这个过程计算机的输入输出设备是什么?

    • 我:

      • 输入设备:键盘、磁盘(由磁盘读取键盘获取的数据)
      • 输出设备:网卡、显示器(我可以看到我发出去的数据)
    • 朋友:

      • 输入设备:网卡
      • 输出设备:磁盘(数据存储在磁盘上)、显示器
  2. 数据在我的计算机流动过程
    我在键盘上输入数据,被磁盘读取存储,然后被缓存到内存中被CPU进行运算处理并对数据进行封装,完成后写回到内存,此时的网卡就可以从内存获取已经处理好的数据,然后在网络中进行处理(此处忽略网络处理细节)

  3. 数据在朋友的计算机流动过程
    朋友的网卡从网络当中获取我的数据后,将数据加载到内存中,朋友的CPU再从内存中获取数据进行运算处理与解包,然后再将处理好的数据写回到内存中,最后磁盘在内存中获取数据再加载到你朋友的显示器上显示。

在这里插入图片描述

http://www.dtcms.com/a/349029.html

相关文章:

  • 【机器学习】5 Bayesian statistics
  • AOSP构建指南:从零开始的Android源码之旅
  • 青少年软件编程(python六级)等级考试试卷-客观题(2024年6月)
  • 2.3 金融中介机构的业务
  • 《深入理解Java虚拟机》学习笔记
  • 【高级】系统架构师 | 系统工程
  • Java面试篇
  • 数字防线:现代企业网络安全运维实战指南
  • WinContig:高效磁盘碎片整理工具
  • [Mysql数据库] 知识点总结1
  • [身份验证脚手架] docs | breeze:install
  • 电梯间电动车误检率↓79%!陌讯多模态融合算法实战解析
  • ROS1中的Package
  • Ansible 自动化基石:变量定义、优先级控制与 Vault 敏感信息加密实战指南
  • 100个实用小工具1.3历年股价分析小工具新增股价批量下载
  • Linux shell脚本条件循环
  • MATLAB 在工程仿真中的实践:以机械振动分析为例的完整流程
  • 1.Spring Boot:超越配置地狱,重塑Java开发体验
  • LeetCode 101 刷题 - (2) 第二章 玩转双指针
  • Jupyter Lab 常用快捷键清单
  • C++标准库头文件使用指南
  • 【C++】10. list
  • BUCK电路的环路补偿
  • JDK版本报错
  • 在PC机上使用虚幻引擎5(UE5)开发第一款游戏的完整入门指南
  • 门面设计模式
  • Python核心技术开发指南(012)——浮点数
  • 如何捕获组件的异常情况
  • 一个简单的html音乐播放器
  • 阿里发布Qoder:颠覆软件开发体验的AI编程平台