【lesson8】冯诺依曼体系的介绍

2023-09-21 16:52:05

冯诺依曼体系是什么?

冯诺依曼体系是一种计算机体系结构,是现代计算机的基础被广泛应用。
如图所示:
在这里插入图片描述
输入设备键盘,摄像头,话筒,磁盘,网卡等等
输出设备显示器,音响,磁盘,网卡等等
存储器内存
CPU(中央处理器):运算器+控制器
运算器主要进行算术运算和逻辑运算
控制器CPU是可以响应外部事件的,而控制器可以协调外部就绪事件,比如:拷贝数据到内存。
其中我们可以看到,有些硬件既可以做输入设备又可以做输出设备。而有些设备就是单独的做输入设备和输出设备。

为什么要有存储器?

从上面我们可以知道输入设备是产生数据,CPU是对数据进行处理的,输入设备是保存或者显示处理后的数据。
那么我们可以直接用CPU和外设交互为什么要多一个存储器呢?
在这里插入图片描述
我们都知道计算机有个存储金字塔
在这里插入图片描述
我们可以看到CPU和外设读取数据的效率差距是很大的。而我们大家应该都听过木桶原理,所以如果CPU和外设直接交互的话效率是由外设决定的,效率非常低下。
所以由存储器(内存),和外设打交道我们可以先把数据加载到内存,然后CPU不和外设打交道只和内存打交道,这样就提高了交互效率
所以存储器存在的有原因三个:
1.CPU和外设直接交互效率低
2.内存和CPU交互可以提高整机效率
3.效率较高,成本较低

我们知道凡是被广泛传播的产品一定是价格便宜,质量OK的。
从上面我们知道了两点:
1.CPU读取数据(数据+代码)都是从内存中读取的。
站在数据的角度,我们认为CPU不和外设直接交互
2.CPU要处理数据,需要先将外设中的数据加载到内存。
站在数据的角度,我们认为外设直接只和内存打交道。

而上面的过程就是数据走的过程,就是IO的过程。
在这里插入图片描述
具体IO过程:当输入设备 接收 到数据,数据将被 存储 到存储器,控制器发出取数据和 运算 的指令,数据被取出方去放入运算器中加以运算,运算结束后,控制器发出存入数据的指令并 输出 ,数据被存储到存储器,再通过输出设备进行输出。

我们以前经常听到程序要运行必须先被加载到内存中这是为什么呢?
现在知道了,这是冯诺依曼体系结构的特点。

怎么实现数据传输的?

我们学了这么多那么数据到底是怎么从一个冯诺依曼体系流向另一个冯诺依曼体系呢?
假设小明和小华,一个在福建一个在西藏,他们彼此用QQ聊天,那么他们是怎么接收到彼此的消息的呢?
在这里插入图片描述
我们可以看到数据的流向如图所示。

更多推荐

Python学习-简易聊天室

聊天功能分析1.网络搭建2.进入聊天室客户端:1.输入姓名2.将请求发送给服务器3.接收结果,允许进入则可以聊天,不允许则重新输入姓名服务器:1.接收请求2.判断姓名是否存在,如果允许进入,存储用户基本信息,通知其他客户端,如不允许则结束3.将结果通知客户端3.聊天客户端1.创建新的进程2.一个进程循环接收消息3.一个

package中添加一条命令,用来自动选择包管理器进行依赖安装

package中添加一条命令,用来自动选择包管理器进行依赖安装前提:当前项目为vite项目,所以直接使用import导入模块package.json中的scripts添加"scripts":{"start":"nodescripts/init.js"...},文件目录为init.js的文件为import{execSyn

软件测试进大厂,拿高薪,怎么做?看这里!

有些同学大学专业不对口,但有想进大厂想拿高薪心,只要你有想法,那就一定有实现的方法。俗话说:“世间无难事,只怕有心人”。仔细思索一下,哪家大厂能缺软件测试这一重要职位。相对大学所学专业而言,大厂录取测试人员,更多的是看重这个人的能力和相应的项目经验积累。所以不管是科班还是非科班出身的测试人员想敲开大厂的门,可以做到以下

大模型赛道如何实现华丽的弯道超车

🚀欢迎来到本文🚀🍉个人简介:陈童学哦,目前学习C/C++、算法、Python、Java等方向,一个正在慢慢前行的普通人。🏀系列专栏:陈童学的日记💡其他专栏:C++STL,感兴趣的小伙伴可以看看。🎁希望各位→点赞👍+收藏⭐️+留言📝​⛱️万物从心起,心动则万物动🏄‍♂️前言:Alluxio作为一款强大的

手把手教你5种方法实现Java判断字符串是否为数字

方法一:用JAVA自带的函数publicstaticbooleanisNumeric(Stringstr){for(inti=str.length();--i>=0;){if(!Character.isDigit(str.charAt(i))){returnfalse;}}returntrue;}方法一通过遍历字符串的

js中哪些地方会用到window?

前言Window对象是JavaScript中的顶层对象,它代表了浏览器中打开的窗口或者标签页。浏览器中打开的每一个窗口/标签页都会有一个对应的Window对象。在浏览器中,全局作用域的this就是指向Window对象。正文在JavaScript中,window对象表示浏览器窗口(通常也称为浏览器窗口或浏览器窗口)。以下

Linux 中的make/makefile

一:背景make是一个命令工具,是一个解释makefifile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,VisualC++的nmake,Linux下GNU的make。可见,makefifile都成为了一种在工程方面的编译方法。一个工程中的源文件不计数,其按类型、功能、模块分别

Redis常用应用场景

Redis是一款开源的基于内存的键值存储系统,它提供了多种数据结构和丰富的功能,适用于各种不同的应用场景。以下是Redis常用的应用场景:1.缓存:Redis最常见的用途就是作为缓存。由于Redis存储在内存中,读取速度非常快,可以显著减轻数据库的负载。将频繁读取的数据存储在Redis中,可以大幅提高应用的响应速度。2

SpringBoot-RabbitMQ

RabbitMQ是一个开源的消息中间件,它实现了AMQP(AdvancedMessageQueuingProtocol)协议,并提供了可靠的消息传递机制。SpringBoot中使用RabbitMQ实现异步消息的发送和接收。使用SpringBoot提供的AmqpTemplate和@RabbitListener注解进行消息

数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病...

全文链接:http://tecdat.cn/?p=23061这个数据集(查看文末了解数据免费获取方式)可以追溯到1988年,由四个数据库组成。克利夫兰、匈牙利、瑞士和长滩。"目标"字段是指病人是否有心脏病。它的数值为整数,0=无病,1=有病(点击文末“阅读原文”获取完整代码数据)。数据集信息:目标:主要目的是预测给定的

难得有个冷静的程序员发言了:纯编码开发实施的项目,失败的案例也有很多

难得有个冷静的程序员发言了:纯编码开发实施的项目,失败的案例也有很多。假如用低代码实施,能达到不失败或提高成功率,对软件开发项目交付,会是重大的价值。我的观点:两者都可能失败,不同的是,传统编程开发的项目,失败都是发生在项目的中后期,前期靠PPT保证,在实施过程中,做着做着就发现做不下去了(需求风险,成本风险,技术风险

热文推荐