冯诺依曼体系结构

文章目录

  • 一.冯诺依曼体系结构的主要组成部分
    • 1.输入设备 & 输出设备
    • 2.存储器
    • 3.运算器 & 控制器
  • 二.为什么这么设计
  • 三.现实案例

一.冯诺依曼体系结构的主要组成部分

当代的计算机,本质上都是一堆硬件的集合(CPU、内存、磁盘、显卡等),这些硬件并不是毫无章法的堆放在一起,而是以冯.诺依曼体系结构来构成计算机的基本单元。

在这里插入图片描述

1.输入设备 & 输出设备

在计算机中,都是以二进制形式进行交互,我们是无法直接与内存或者CPU交互的,所以需要有输入设备,而计算机将数据处理之后,也是二进制形式,所以也有了输出设备。

  • 输入设备:键盘、鼠标、摄像头、磁盘、网卡等
  • 输出设备:显示屏、音响、磁盘、网卡等

这两个都是属于计算机的外设。

2.存储器

一般来说,存储器指的是内存和外存,但是对于CPU而言,类似于磁盘、U盘这样的外存,是属于输入输出设备的,所以这里的存储器指的是内存

3.运算器 & 控制器

在计算机,我们从外设将输入导入到内存中,然后再由运算器对我们的数据进行计算(算数运算、逻辑计算)

而什么时候将数据写入存储器,再又什么时候将数据导入中央处理器,或者又什么时候将处理完毕的数据传给存储器,再由存储器交给输出设备,这些过程都需要有硬件来进行控制,而控制器就是做这些工作。

这五大单元都各种有着各种的功能,都是独立的个体,然后用系统总线或I/O总线连接起来让其能交互,这就是冯.诺依曼结构的主要组成部分

二.为什么这么设计

在这里插入图片描述
通过存储器金字塔可以看出,离cpu越远,存储的容量越来大,效率越来越低,我们的输入输出设备,就处于金字塔的底层,他们的效率和cpu的效率完全不在一个级别,如果让他们直接和cpu交互,那势必会拖慢cpu的效率,从而我们计算机的整体效率就会以输入输出设备为主了,导致计算机的效率就会十分低下。

在此情况下,引入了一个比输入输出设备快,比cpu稍慢的内存,让输入设备先把数据读取到内存当中,然后cpu再从存储器拿数据,运算器将数据处理完毕之后,在交给存储器,最后再由存储器交给输出设备。那这样就能适配硬件层面上cpu和外设的速度差。

如果没有存储器,cpu直接对接输入输出设备,这种工作方式就是串行,一个环节影响着一个环节
有了存储器之后,数据可以预加载到内存中,要计算的时候就直接去内存拿数据即可,那这样就能加载数据和计算数据并行,从而在一定程度上提高效率。在这个过程中,存储器可以看成一个硬件级别的缓存空间。

那为何不将所有的存储设备造成寄存器级别的呢?

这在理论上可行,但势必会将计算机的造价变得十分高,过高的价格,那就不会被普及,不便于计算机的整体发展。有了内存的存在,就能以较小的成本,造出满足我们日常需求的计算机。

这就好比我们现在开的小汽车,基本就是烧油或者电驱动,这些每隔一段时间就要加油或者充电。要是用上核动力,那岂不美哉?那为何不普及呢?
这在技术层面是可以实现的,但是成本巨大,安全性不高,不利于小汽车的普及。

有了上述理论知识,就可以理解为什么程序要运行,必须先从磁盘加载到内存上当中

我们的代码在输入设备里面,要运行需要cpu的计算,这个过程就必须经过内存,这是冯诺依曼体系结构规定

所有的软件都必须遵守硬件结构,硬件属于计算机下限和边界,软件是上限,不管软件多牛,都得遵守规定!

三.现实案例

假设我们使用微信和别人聊天,这整个数据是如何流动的呢(不考虑网络和软件)?

这两台计算机,都是冯诺依曼体系结构,所有可以看作两个冯诺依曼体系结构交互。

在这里插入图片描述
当我们要给对方发信息的时候,这时候的输入设备就是键盘

输入的内容加载到内存,发送的消息里面不仅仅有消息,还有是谁发送的消息、发送消息的时间等,这些数据经过cpu打包计算之后再写回内存,最后发送在输出设备里面。

这里的输出设备不仅仅是显示器,本质上是发送到了网卡当中,显示器只是顺便的

这样我们的消息就发送出去了,那这时候,对方的输入设备就是网卡,输入设备将数据加载到内存,经过cpu的处理(解包、解压)再返回内存,最后由内存发送给输出设备,这时候对方就能看到我们所发送的消息


再假设,我们平时可能要发送一些文件给对方,这个文件是存储在磁盘当中,当我们拖拽这个文件发送的时候,这时候的输入设备就是磁盘

再经过这个体系发送给对方,当对方收到之后,这个文件并不是打开的,只是有一个图标,需要对方接收下载才能查看

如果对方当时并没有接收,第二天才接收,这时候这个文件还是存在的,这说明这个文件并不是在内存或者cpu,因为内存或者cpu属于掉电易失性存储。所以这个文件其实是在我们的磁盘上,这时候磁盘就属于输出设备

这整个过程,就是冯诺依曼体系结构


本文到此结束,码文不易,还请多多支持!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1450.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot中的接口实现调用

定义接口:实现接口调用分析在类中定义方法也可以在其他类中声明使用,与使用接口的方法相比他们的差异是什么,哪个更合理 springboot中的接口实现调用: 定义接口: 通过创建一个interface的类型的类创建接口 示例: package app.test4.OpportunityMatching;import org.springframe…

【C++】命名空间 ( namespace )

目录搁这 什么是命名空间命名空间的作用如何定义命名空间命名空间的种类如何使用命名空间内的成员作用域限定符命名空间展开命名空间全部展开命名空间部分展开 总结 什么是命名空间 命名空间是一种用来避免命名冲突的机制,它可以将一段代码的名称隔离开&#xff0c…

对学习方法的一些思考

只看基金的招募书和合同的只言片语是没办法彻底的了解这只基金的策略的,必须有一个机会看看基金经理是怎么聊这个策略的! 基金这个壳子的【股票/债券】究竟应该如何配比才能达到理想且优秀的效果呢? 【债券配得多从长期(5年&#…

纯CSS实现的卡片切换效果

纯CSS实现的卡片切换效果 无需JS就可以实现限于纯静态页面产品展示不需要轮播,自动切换 示例代码 <template><div class"example-css-tab"><div class"container dwo"><div class"card"><input type"radio"…

【实战总结】SpringMVC架构升级SpringCloudAlibaba

升级目标 SpringMVCDubboZookeeper分布式架构改为Spring Cloud Alibaba微服务 技术框架:Spring Boot 2.7.2、Spring Cloud 2021.0.3 & Alibaba 2021.0.1.0 容器:Tomcat 9.0.65 JDK:1.8 配置中心:Nacos 2.0.4 消息队列:RocetMQ 4.9.3 配置中心:Apollo 11.0 缓存: Redis 4.0…

Elasticsearch 查询分析器简介

Elasticsearch 查询分析器简介 一、Elasticsearch 查询分析器概述1.1 Elasticsearch 简介1.2 查询分析器的作用 二、查询分析器类型2.1 Standard Analyzer2.2 Simple Analyzer2.3 Whitespace Analyzer2.4 Stop Analyzer2.5 Keyword Analyzer2.6 Pattern Analyzer2.7 语言分析器…

【C语言】杨氏矩阵中寻找元素

题目名称&#xff1a; 杨氏矩阵 题目内容&#xff1a; 有一个数字矩阵&#xff0c;矩阵的每行从左到右是递增的&#xff0c;矩阵从下到上递增的&#xff08;杨氏矩阵的定义&#xff09;&#xff0c;请编写程序在这样的矩阵中查找某个数字是否存在。 形如这样的矩阵就是杨氏…

[USACO21DEC] Convoluted Intervals S

洛谷[USACO21DEC] Convoluted Intervals S 题目大意 有 n n n个区间&#xff0c;第 i i i个区间为 [ a i , b i ] [a_i,b_i] [ai​,bi​]&#xff0c;都在 [ 0 , m ] [0,m] [0,m]上。对于每一个 k ∈ [ 0 , 2 m ] k\in [0,2m] k∈[0,2m]&#xff0c;求满足 a i a j ≤ k ≤ …

关于贪心算法的一个小结

下面的内容主要参考了数据结构与算法之美。 贪心算法的应用有&#xff1a; 霍夫曼编码&#xff08;Huffman Coding&#xff09; Prim和Kruskal最小生成树算法 01背包问题(当允许取部分物品的时候) 分糖果 我们有m个糖果和n个孩子。我们现在要把糖果分给这些孩子吃&#xff…

MySQL是否解决幻读问题

MySQL是否解决幻读问题 MySQL事务隔离级别 ✓ 读未提交&#xff08;Read Uncommitted&#xff09;&#xff1a;最低的隔离级别&#xff0c;会读取到其他事务还未提交的内容&#xff0c;存在脏读。 ✓ 读已提交&#xff08;Read Committed&#xff09;&#xff1a;读取到的内容都…

chatglm微调

chatGML 看到 【【官方教程】ChatGLM-6B 微调&#xff1a;P-Tuning&#xff0c;LoRA&#xff0c;Full parameter】 【精准空降到 15:27】 https://www.bilibili.com/video/BV1fd4y1Z7Y5/?share_sourcecopy_web&vd_sourceaa8c13cff97f0454ee41e1f609a655f1&t927 记得看…

npm 加速 国内镜像源

一、修改成腾讯云镜像源 1、命令 npm config set registry http://mirrors.cloud.tencent.com/npm/ 验证命令 npm config get registry 如果返回http://mirrors.cloud.tencent.com/npm/&#xff0c;说明镜像配置成功。 二、修改成淘宝镜像源 命令 npm config set regist…

一文了解Docker之网络模型

目录 1.Docker网络 1.1 Docker网络模型概述 1.2 Docker网络驱动程序 1.2.1 host模式 1.2.2 bridge模式 1.2.3 container模式 1.2.4 none模式 1.3 Docker网络命令示例 1.3.1 创建一个自定义网络 1.3.2 列出所有网络 1.3.3 连接容器到网络 1.3.4 断开容器与网络的连接…

SpringCloud(三)LoadBalancer负载均衡

一、负载均衡 实际上&#xff0c;在添加LoadBalanced注解之后&#xff0c;会启用拦截器对我们发起的服务调用请求进行拦截&#xff08;注意这里是针对我们发起的请求进行拦截&#xff09;&#xff0c;叫做LoadBalancerInterceptor&#xff0c;它实现ClientHttpRequestIntercep…

Android 系统的分区介绍

由于Android系统采用Linux架构&#xff0c;所以Android的系统分区可以类比同样采用Linux架构的操作系统&#xff08;如Windows&#xff09;。 Android系统分区分类 现在一般常见的Android分区方式共有三种&#xff0c;在不同的Android系统版本上会采用不同的分区方式。 1、传…

Postman接口自动化之postman脚本编写

这是之前搞的接口自动化方案&#xff0c;已经在业务测试中实现了使用postman编写接口脚本&#xff0c;通过GitHubJenkinsemail html report实现了接口自动化&#xff0c;现在分块整理一下。 postman脚本编写 1、创建集合 和 目录&#xff1a; 一条业务线下的接口可以放到一个…

Android adb说明与详解

Android adb 说明与详解 Android Debug Bridge&#xff08;ADB&#xff09;是一个非常有用的工具&#xff0c;它可以帮助开发人员在Android设备和计算机之间进行通信&#xff0c;以便在设备上进行调试、测试和安装应用程序。 1. 安装ADB 在使用ADB之前&#xff0c;您需要安装…

sonarqube安装并配置CI/CD

sonarqube安装使用 目录 简介效果(配置在下面查看)官方文档环境准备配置compose-sonarqube.yml启动登录集成Gitlab 获取私钥sonarqube配置gitlab查看项目 配置 手动方式Gitlab CI/CD 自动检测 简介 SonarQube是一个开源的代码质量管理平台&#xff0c;用于对代码进行静态代…

【数学建模】——相关系数

第一部分&#xff1a;皮尔逊相关系数的计算以及数据的描述性统计 本讲我们将介绍两种最为常见的相关系数&#xff1a;皮尔逊person相关系数和斯皮尔曼spearman等级相关系数。它们可以用来衡量两个变量之间的相关性的大小&#xff0c;根据数组满足的不同条件&#xff0c;我们要选…

Monocular 3D Object Detection with Depth from Motion 论文学习

论文链接&#xff1a;Monocular 3D Object Detection with Depth from Motion 1. 解决了什么问题&#xff1f; 从单目输入感知 3D 目标对于自动驾驶非常重要&#xff0c;因为单目 3D 的成本要比多传感器的方案低许多。但单目方法很难取得令人满意的效果&#xff0c;因为单张图…