【Linux从入门到精通】了解冯诺依曼体系结构

news2024/10/5 13:45:28

  本片文章会对冯诺依曼体系结构进行详解。同时,我们对冯诺依曼的理解,不能停留在概念上,要深入到对软件数据流理解上。本片文章同时也会对数据在冯诺依曼结构上的交互进行讲解。希望本篇文章会对你有所所帮助。 

文章目录

一、简单认识冯诺依曼体系结构 

二、数据交互

2、1 数据是直接通过磁盘传向CPU吗?

2、2 CPU与内存之间的存储设备——高速缓存

2、3 数据交互细节

2、3、1 本地I/O 

2、3、2 网络I/O 


🙋‍♂️ 作者:@Ggggggtm 🙋‍♂️

👀 专栏:Linux从入门到精通 👀

💥 标题:冯诺依曼体系结构 💥

 ❣️ 寄语:与其忙着诉苦,不如低头赶路,奋路前行,终将遇到一番好风景 ❣️

一、简单认识冯诺依曼体系结构 

  冯诺依曼体系结构(von Neumann architecture)是一种计算机设计原则,也称为“普通计算机体系结构”(conventional computer architecture)。它是由匈牙利数学家冯诺依曼在20世纪40年代提出的,是现代计算机体系结构的基础。

  冯诺依曼体系结构的主要特点是将计算机的控制单元、运算单元、存储器以及输入输出设备等组成部分连接在一起,形成一个完整的计算机系统。它采用存储程序的思想,即将指令和数据存放在同一个存储器中,并通过程序计数器(PC)来控制程序的执行顺序。这种体系结构的优点是操作灵活、编程方便,且适用于大部分计算机应用领域

  我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系

  下面这张图片那就生动形象的展示出冯诺依曼体系结构:

  正如上图所示,我们所认识的计算机,都是有一个个的硬件组件组成,具体有如下:

  • 输入设备:键盘、鼠标、磁盘、网卡、写板等等;
  • 输出设备:显示器、硬盘、网卡、显卡、音响等等;
  • 存储器:内存;
  • CPU:运算器和控制器。

  注意,这里的存储器会导致很多人理解错误。存储器单单指的是内存。磁盘不是存储器吗?不是的。磁盘是我们的输入和输出设备。为什么磁盘既是输入设备,又是输出设备呢?举个例子:我们平常在写代码的时候,运行时所产行的可执行程序文件等等文件都是保存在磁盘上的,这时磁盘充当输入设备。当程序运行起来后,需要从磁盘上拿数据到内存,这时磁盘充当着输出设备。

  存储器也指内存,所有的输入和输出数据只能和和内存打交道。后面我们也会解释数据为什么要跟内存打交道、输入数据是怎么通过内存输出的呢。

   CPU,即中央处理器,是一台计算机的运算核心和控制核心。其功能主要是解释计算机指令以及处理计算机软件中的数据。CPU由运算器、控制器、寄存器、高速缓存及实现它们之间联系的数据、控制及状态的总线构成,下面我们也会对其简单解释。

二、数据交互

  上面我们了解到冯诺依曼体系结构后,我们不能只停留在概念上,我们还应了解数据在冯诺依曼体系结构上是怎么进行交互的才行。我们接下来会详细解释。

2、1 数据是直接通过磁盘传向CPU吗?

 根据机械原理,较大的存储设备要比较小的存储设备运行的慢。当然,较快的存储设备造价成本就很高了。当我们买个几百G或者及几T硬盘的价格只能买到几G的内存条:

  这一对比差距就很明显了。 那我们大概知道了磁盘的运行速度慢,而内存的运行速度很快。具体速度差别有多大呢?正常情况下,CPU从磁盘上读取一个字节的时间开销要比从内存上读取的开销大1000万倍。差距确实很大。

  根据水桶效应,我们清楚的认识到数据不要直接从磁盘上读取,应把数据加载到内存中,CPU从内存上读取数据。这样会整体的提高CPU读取数据的效率。

2、2 CPU与内存之间的存储设备——高速缓存

  CPU与内存之间还有存储设备吗?答案是有的。我们还知道的有一个寄存器。寄存器也是比较快的。类似地,一个典型的寄存器文件只存储几百字节的信息,而主存里可存放几十亿字节。然而,处理器从寄存器文件中读效据比从主存中读取几乎要快 100倍。更麻烦的是,随着这些年半导体技术的进步,这种处理器与主存之间的差距还在持续增大。加快处理器的运行速度比加快主存的运行速度要容易和便宜得多。
  针对这种处理器与内存之间的差异,系统设计者采用了更小更快的存储设备,称为高
速缓存存储器
(cache memory,简称为 cache 或高速缓存),作为暂时的集结区域,存放处
里器近期可能会需要的信息。我们可看下图,存储的分级:

  上图展示了一个典型系统中的高速缓存存储器。比较新的、处理能力更强天的系统甚至有三级高速缓存: LT、L2和 L3。系统可以获得一个很大的存储器,同时访问速度也很快,原因是利用了高速缓存的局、部性原理,即程序具有访问局部区域里的数据和代码的趋势。经常访问的数据,大部分的内存操作都能在快速的高速缓存中完成。

2、3 数据交互细节

  其中,我们输入数据时,我们称为输入(Input)。输出数据我们成为输出(Output)。输入/输出是一种基本的数据传递操作,它可以理解为字符序列在计算机内存与外设之间的流动。
数据从一个对象到另一个对象的流动抽象为流,实现设备之间交换信息的类称为流类。按面向对象方法组织的多个流类及其类层次集合构成了I/O流类库,简称为流库。

  其中我们在自己的计算机上进行操作,我们称他为本地I/O。我们用自己的设备软件(例如QQ、微信)向他人发送信息,我们称他为网络I/O

2、3、1 本地I/O 

  通过上面对CPU读取数据的了解后,我们再来分析数据的交互细节。有了内存,CPU就不再和外设(输入设备和输出设备)打交道了。而是直接将输入数据加载到内存中后,CPU从内存中读取数据。经过CPU的计算,再把数据加载回内存。最终由内存把数据向输出设备进行输出。这也反映出内存是冯诺依曼体系结构中的核心设备。

2、3、2 网络I/O 

  其中我们了解到了本地I/O的数据交互的细节。那我们看看网络I/O是怎么实现的。首先,网络I/O是从我们的计算机发送数据到另一台计算机,如下图:

  当然,我们是站在纯硬件(冯诺依曼体系结构)的角度去分析。我们在城市A发送数据到城市B的朋友的计算机上。我们的输入设备可能是键盘、鼠标等。我们把数据是输出到了网卡上,网卡在这里充当着我们的输出设备。数据再通过网络的一系列操作加载到了城市B朋友的计算机上。此时朋友的计算机的输入设备为网卡,最终经过CPU的计算处理输出到输出设备上,例如屏幕。我们可结合下图理解:

  关于冯诺依曼,比较重要的几点:

  • 这里的存储器指的是内存;
  • 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备);
  • 外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。
  • 一句话,所有设备(数据)都只能直接和内存打交道。
  本章的内容讲解到这里,感谢阅读ovo~

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

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

相关文章

牛客网面试必刷:BM17 二分查找-I

牛客网面试必刷&#xff1a;BM17 二分查找-I 前言一、什么是二分查找&#xff1f;二、二分查找具体代码1.第一种写法&#xff1a;left < right2.第二种写法&#xff1a;left < right 三、复杂度分析 前言 二分查找是一个常见、基础、难度较低问题&#xff0c;本文记录了…

【JMeter入门】—— JMeter介绍

1、什么是JMeter Apache JMeter是Apache组织开发的基于Java的压力测试工具&#xff0c;用于对软件做压力测试。它最初被设计用于Web应用测试&#xff0c;但后来扩展到其他测试领域。 &#xff08;Apache JMeter是100%纯JAVA桌面应用程序&#xff09;Apache JMeter可以用于对静…

linux系统挂载硬盘

linux系统挂载硬盘 1、背景2、环境3、准备工作4、挂载分区4.1、查看分区信息4.2、创建分区4.3、设置分区格式4.4、创建挂载目录4.5、挂载分区4.6、设置开机自动挂载4.7、验证是否挂载成功 1、背景 日常使用过程中随着系统业务量的新增对磁盘的空间和性能提出了更高的要求&…

功能测试之设计语言测试:功能测试包含哪些测试?分别有什么作用

Web 设计语言版本的差异可以引起客户端或服务器端严重的问题&#xff0c;例如使用哪种版本的HTML 等。当在分布式环境中开发时&#xff0c;开发人员都不在一起&#xff0c;这个问题就显得尤为重要。除了HTML 的版本问题外&#xff0c;不同的脚本语言&#xff0c;例如Java、Java…

按照这6步学习测试,月薪不过万,我给你介绍测试工作

上周一刚入职不久&#xff0c;是在上海的一家软件公司&#xff0c;税前11K&#xff0c;五险一金&#xff0c;996的工作制&#xff0c;已经上班了一个月&#xff0c;说下自己的感受。 因为我专科毕业4年&#xff0c;之前一直在做电商运营&#xff0c;大专学的专业是电子商务&am…

Linux上Nacos基本使用:连接MySQL并修改密码、启动、停止命令等

Nacos如何连接MySQL并修改密码 说明如何将内嵌数据库Derby切换为MySQL数据库直接新建MySQL数据库: 必须是MySQL5.7及以上 如何修改密码启动、停止命令 说明 nacos默认&#xff1a; 使用内嵌的数据库&#xff08;Derby&#xff09;默认登录地址 ip:8848/nacos; 账号&#xff1…

Flutter组件——Getx入门01

前言 最近要正式开始写一个flutter项目了&#xff0c;我在浏览flutter如何进行框架设计的时候突然看到了一篇关于如何管理flutter状态的文章。flutter中的状态管理并不是很好理解&#xff0c;但是你需要在页面之间传值或者改变组件中的某个值的时候就必须更改状态。当我在这篇…

C生万物 | 字符串函数与内存函数解读【附英译中图解】

文章目录 求字符串长度一、strlen() 长度不受限制的字符串函数一、strcpy()二、strcat()三、strcmp() 长度受限制的字符串函数一、引入二、strncpy()三、strncat()四、strncmp() 字符串查找函数一、strstr()二、strtok() 错误信息报告函数一、strerror() 字符操作函数内存操作函…

从“能用”到“好用”:它的出现,解决你80%的转型困境【内含免费试用附教程】

免费试用地址&#xff1a;引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构引迈信息&#xff0c;提供快速开发平台、快速开发框架、低代码开发平台、低代码开发框架、0代码开发平台、0代码开发框架、零代码开发平台、零代码开发…

战略投资奥琦玮,微盟冲在餐饮复苏最前线

作者 | 辰纹 来源 | 洞见新研社 好起来了&#xff0c;一切都好起来了。 刚刚过去的五一假期&#xff0c;广州费大厨正佳广场店每天取号1000多桌&#xff0c;餐厅翻台率达到了1200%&#xff1b;长沙文和友单日最高排号超过1万&#xff0c;到店人数近6万&#xff1b;武汉主力龙…

OpenGL高级-帧缓冲

效果展示 知识点 颜色缓冲记录帧的颜色值&#xff0c;深度缓冲记录深度信息&#xff0c;模板缓冲允许我们基于一些条件丢弃指定片段。这几种缓冲结合起来叫做帧缓冲(FrameBuffer)&#xff0c;它被储存于内存中。  OpenGL给了我们自己定义帧缓冲的自由&#xff0c;我们可以选择…

Linux网络——shell脚本之正则表达式

Linux网络——shell脚本之正则表达式 一、概述二、基本的正则表达式三、实践操作1.匹配输出规定的电话号码2.匹配规定格式的邮箱 一、概述 正则表达式是对字符串操作的一种逻辑公式&#xff0c;就是用事先定义好的一些特定字符、及这些特定字符的组合&#xff0c;组成一个“规则…

实时聊天如何做,让客户眼前一亮(二)

让我们继续讨论一下如何利用SaleSmartly&#xff08;ss客服&#xff09;在网站中的实时聊天视图如何提供出色的实时聊天体验。 四、在实时聊天会话期间 让我们来看看我们可以确保尽可能的提高客户体验的各种方法&#xff0c;使用SaleSmartly&#xff08;ss客服&#xff09;时聊…

Magic-API的部署

目录 概述简介特性 搭建创建元数据表idea新建spring-boot项目pom.xmlapplication.properties打包上传MagicAPI-0.0.1-SNAPSHOT.jar开启服务访问 magic语法 概述 简介 magic-api是一个基于Java的接口快速开发框架&#xff0c;编写接口将通过magic-api提供的UI界面完成&#xf…

性能优化之Tomcat优化策略

一、优化策略 系统性能的衡量指标&#xff0c;主要是响应时间和吞吐量。 1&#xff09;响应时间&#xff1a;执行某个操作的耗时&#xff1b; 2) 吞吐量&#xff1a;系统在给定时间内能够支持的事务数量&#xff0c;单位为TPS&#xff08;Transactions PerSecond的缩写&…

WhatsApp App Vs WhatsApp API,哪一个更适合你?

WhatsApp在全球拥有超过20亿月度活跃用户&#xff0c;是一个深受欢迎、可靠和安全的跨平台信息服务&#xff0c;使其成为与朋友、家人、同事和客户通信的首选移动信息程序。使用WhatsApp聊天机器人使推销你的公司和获得新客户变得更简单。 一、让我们先来看看WhatsApp个人应用…

VR全景的价值体现在哪里?VR全景创业有市场吗?

在这个5G时代&#xff0c;思维一定要快&#xff0c;动作还得要帅&#xff0c;动作快的现在已经挣到钱了。VR全景行业赶上了风口&#xff0c;在5G的搭载下发展非常迅速。 随着时代的发展&#xff0c;各行各业百花齐放&#xff0c;而创业的门槛也越来越低&#xff0c;作为创业项目…

怎样使用CAD在nVisual中创建楼层场景

nVisual是一款网络基础设施可视化管理软件&#xff0c;通过模型可规划即将建设的机房效果&#xff0c;或者将已有的机房场景复刻至系统中&#xff0c;便于运维管理者清晰的了解数据中心/机房设备及线缆路由连接关系。 用户手里的资料一般都会有机房的CAD图纸&#xff0c;在nVi…

玩转Typora

玩转Typora 文章目录 玩转Typora我的用法安装typoraMath行内公式&#xff1a;块公式&#xff1a;矩阵行列式 DiagramsFlowMermaidClass DiagramFlowchartPie ChartSequence Diagram SequenceIframeAudio 文本颜色、居中设置Typora修改css格式主题修改滚动条颜色背景色**webkit下…

使用 Jetson Orin Nano 在 Ubuntu 20.04 中编译安装 ROS2 Foxy

本文详细介绍了在 Jetson Orin Nano 类似的 ARM 设备上编译安装 ROS2 的 Foxy 分支的过程&#xff0c;包括从源代码编译、安装依赖库、设置环境变量等方面。同时&#xff0c;针对安装过程中可能遇到的问题&#xff0c;提供了相应的解决方案&#xff0c;以帮助读者顺利完成 ROS2…