《Linux从练气到飞升》No.10 冯洛依曼体系结构

news2024/12/25 11:22:16

🕺作者: 主页

我的专栏
C语言从0到1
探秘C++
数据结构从0到1
探秘Linux
菜鸟刷题集

😘欢迎关注:👍点赞🙌收藏✍️留言

🏇码字不易,你的👍点赞🙌收藏❤️关注对我真的很重要,有问题可在评论区提出,感谢阅读!!!

文章目录

    • 前言
    • 冯·诺伊曼体系结构的提出背景
    • 冯诺依曼体系结构的概念
    • 冯诺依曼体系结构的设计
    • 后记

前言

前面我们讲述的主要是在Linux上工具的使用,但是从本篇开始将会讲述一些理论知识,并配以代码实践来学习Linux的知识,可能会比较晦涩,希望大家坚持下去,“长风破浪会有时,直挂云帆济沧海”。

本篇主要内容为介绍冯诺依曼体系结构的相关概念即应用~

冯·诺伊曼体系结构的提出背景

冯·诺伊曼体系结构的提出背景可以追溯到20世纪40年代的第二次世界大战期间。当时,计算机的发展正处于初级阶段,计算机系统的设计和构建面临着一些挑战和限制。

在那个时期,计算机主要是以专用目的为导向进行设计和构建的,每个计算机系统都是为特定的计算任务或应用而开发的。由于缺乏通用性,这些计算机系统无法灵活地适应不同的计算需求,而且重复利用其中的组件和技术也非常困难。

冯·诺伊曼在这个背景下提出了冯·诺伊曼体系结构的概念,旨在解决当时计算机系统面临的种种问题和限制。他认识到,将计算机的指令和数据存储在同一个存储器中,并通过按顺序执行指令的方式来进行运算,可以使计算机更加灵活、通用且易于设计和构建。

冯·诺伊曼体系结构的核心思想是将程序和数据视为存储器中的一系列指令,计算机按照存储器中指令的顺序依次执行,从而完成各种计算任务。这种设计理念使得计算机可以通过改变存储器中的指令序列来实现不同的计算功能,从而提高了计算机的灵活性和通用性。

此外,冯·诺伊曼体系结构还引入了一个控制单元,用于解析和执行存储器中的指令,协调各个组件的工作,并控制数据的流动和处理过程。这种控制单元的引入,使得计算机能够自动地按照程序的要求来执行各种运算,减轻了人工操作的负担。

冯·诺伊曼体系结构提出的背景是为了应对当时计算机系统设计和构建面临的挑战和限制,通过将指令和数据存储在同一存储器中,并按顺序执行指令的方式来实现计算功能,并引入控制单元来协调计算机系统的工作。这种体系结构的提出为计算机的发展奠定了基础,并推动了计算机科学的进步。到了今天,我们常见的计算机,如笔记本。我们不常见的计算机,如服务器,大部分都遵守冯诺依曼体系。

冯诺依曼体系结构的概念

在这里插入图片描述
冯·诺伊曼体系结构是一种计算机系统的基本设计原则和模型,它提出了计算机的几个核心概念和组成部分。其主要概念包括:

  1. 存储器:冯·诺伊曼体系结构将指令和数据存储在同一个存储器中,这个存储器通常被称为主存储器(RAM,Random Access Memory)。这意味着程序指令和数据以二进制形式存储在同一块物理内存中。所有设备都只能直接和内存打交道。

  2. 中央处理单元(CPU):CPU由运算器(ALU,Arithmetic and Logic Unit)和控制单元组成。运算器负责进行算术和逻辑运算,而控制单元负责解析和执行存储器中的指令,并协调各个组件的工作。CPU能且只能对内存进行读写,不能访问外设(输入或输出设备)

  3. 指令集架构(ISA):ISA定义了计算机体系结构所支持的指令集和指令的格式。它规定了程序员和编译器与硬件交互的方式,包括操作码、寻址方式等。

  4. 顺序执行:冯·诺伊曼体系结构通过按照存储器中指令的顺序依次执行来完成计算任务。指令被取出、解码并依次执行,从而实现计算机的运算功能。

  5. 输入和输出设备:冯·诺伊曼体系结构还涉及输入设备(如键盘、鼠标)和输出设备(如显示器、打印机),用于与外界进行数据交互。外设(输入或输出设备)要输入或者输出数据,也只能写入内存或者从内存中读取。

以上这些概念共同构成了冯·诺伊曼体系结构,它将计算机抽象为一台按照指令顺序执行的机器,通过存储器中存储的指令和数据来完成计算任务。这种体系结构具有通用性和灵活性,并成为现代计算机系统设计的基础。

冯诺依曼体系结构的设计

为什么所有设备都只能直接和内存打交道,而不能和CPU交流,那样不是直接就输入了吗?

有时候,路径最短并不是最快最好的,假如设备直接和CPU交流而不和内存打交道,因为输入设备和输出设备的速度远小于CPU的计算速度,CPU直接从输入设备读取数据,经计算后再交给输出设备输出数据,这样会大大降低计算机的执行能力。

为什么要设计成这个样子,要有内存在中间横插一脚?

理由如下:假如外设直接和CPU相连,由于短板效应,速度就比较慢了。
在这里插入图片描述

既然CPU速度快,为什么不用空间大一点的,让整体都变快?

主要是价格原因,计算机之所以能够这么快的流行起来,主打的就是便宜且质量好适合大众,而CPU价格昂贵,所以就有了内存来做中间的缓冲区的故事。
在这里插入图片描述

CPU是如何知道,输入设备有数据需要读取的呢?

请添加图片描述

两台电脑如何通信?

请添加图片描述

后记

本篇讲述了冯诺依曼体系结构的相关知识,包括冯诺依曼体系结构提出的背景、概念及设计。

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

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

相关文章

rust关于项目结构包,Crate和mod和目录的组织

rust 最近开始学习rust语言。感觉这门语言相对java确实是难上很多。开几个文章把遇到的问题记录一下 rust关于包,Crate 关于包,Crate这块先看看官方书籍怎么说的 crate 是 Rust 在编译时最小的代码单位。如果你用 rustc 而不是 cargo 来编译一个文件…

Opencv实战(银行卡识别)

目录 模版匹配不同方法对比一个模板匹配多个 直方图及直方图均衡化Mask操作直方图均衡化自适应直方图均衡化 模版匹配 公式 import cv2 #opencv读取的格式是BGR import numpy as np import matplotlib.pyplot as plt#Matplotlib是RGB %matplotlib inline def cv_show(img,nam…

win10 + VS2022 安装opencv C++

最近需要用到C opencv,看了很多帖子都需要自己编译opencv源码。为避免源码编译,可以使用VS来配置opencv C。下面是主要过程: 目录 1. 从官网下载 opencv - Get Started - OpenCV 2. 点击这个exe文件进行安装 3. 配置环境变量 4. VS中的项…

【数据结构与算法】多路查找树

多路查找树 二叉树的问题分析 二叉树的操作效率较高,但也存在问题。 二叉树需要加载到内存的,如果二叉树节点少,没什么问题,但是如果二叉树的节点很多(比如 1 亿),就存在如下问题&#xff1a…

【信号生成器】从 Excel 数据文件创建 Simulink 信号生成器块研究(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

深度学习:使用卷积神经网络CNN实现MNIST手写数字识别

引言 本项目基于pytorch构建了一个深度学习神经网络,网络包含卷积层、池化层、全连接层,通过此网络实现对MINST数据集手写数字的识别,通过本项目代码,从原理上理解手写数字识别的全过程,包括反向传播,梯度…

selenium爬虫,配置谷歌浏览器的driver

用selenium爬虫时,明明已经安装了selenium模块,程序却运行不了 本文主要涉及驱动有问题driver 网上有很多手动的方法(查看谷歌浏览的版本然后在其他博主分享的webdriver中下载与自己谷歌版本号最贴近的版本号,并把webdriver的地址…

AtuoDL----Tensorboard可视化使用

本教程教你怎么在autodl上使用tensorboard。 1、保存tensorboard日志文件 修改保存日志文件的路径,只有在这个tf-logs下的日志文件才能显示 2、查看tensorboard 进入AutoPanel,点击Tensorboard就能查看

跟禹神VUE——组件间的通信方式(props配置项、组件间自定义事件、全局事件总线、消息订阅与发布、VUEX)

一、通过props配置项传递数据&#xff08;适用于父组件给子组件传递数据&#xff09; 父组件向子组件传递数据&#xff1a; 父组件代码&#xff1a;在子组件的标签中传递数据 <template><div><h2>学校名称&#xff1a;{{schoolName}}</h2><!-- 方…

ROS入门核心教材重要节选

ROS核心教程 1、文件系统 使用下述命令查看包 rospack ros pack(age&#xff09; 如rospack find roscpp roscd ros cd 如roscd roscpp rosls ros ls 如rosls roscpp2、ROS节点 节点可以理解为人工定义一个机器人模块&#xff0c;然后抽象成可执行文件。 rosnode li…

改进DevSecOps框架的 5 大关键技术

Markets and Markets的一项研究显示&#xff0c;全球DevOps的市场规模从2017年的29亿美元增加到2023年的103.1亿美元&#xff0c;预测期的年复合增长率(CAGR)为24.7%。人们对DevOps越来越感兴趣&#xff0c;因为DevOps不仅能够压缩软件的交付周期&#xff0c;还能提高交付的速度…

7.8 封装详解

7.8 封装详解 就是把东西装进箱子里&#xff0c;只留一个口&#xff0c;比如我们看电视的时候我们只用遥控器换一个台就行了&#xff0c;不需要知道电视里面是怎么构造的&#xff0c;电视机使用的厂家为了使用方便就把电视机内部的组件全部封装在了壳子里&#xff0c;只给我们…

Web-WebApp Vue.js 目录结构

WebApp Vue.js 目录结构 目录解析 目录/文件 说明 build 最终发布的代码存放位置。config 配置目录&#xff0c;包括端口号等。我们初学可以使用默认的。node_modules npm 加载的项目依赖模块 src 这里是我们要开发的目录&#xff0c;基本上要做的事情都在这个目录里。里面包…

剪切、复制、粘贴事件

剪切、复制、粘贴事件 oncopy 事件在用户拷贝元素上的内容时触发。onbeforecut 事件在用户剪切文本&#xff0c;且文本还未删除时触发触发。oncut 事件在用户剪切元素的内容时触发。onbeforepaste 事件在用户向元素中粘贴文本之前触发。onpaste 事件在用户向元素中粘贴文本时触…

(2023Arxiv)Meta-Transformer: A Unified Framework for Multimodal Learning

论文链接&#xff1a;https://arxiv.org/abs/2307.10802 代码链接&#xff1a;https://github.com/invictus717/MetaTransformer 项目主页&#xff1a;https://kxgong.github.io/meta_transformer/ 【注】&#xff1a;根据实验结果来看&#xff0c;每次输入一种数据源进行处…

【位操作符的几种题型】

位操作符的几种题型 目录 题型一&#xff1a;寻找“单身狗”。 题型二&#xff1a;计算一个数在二进制中1的个数 题型三&#xff1a;不允许创建临时变量&#xff0c;交换两个整数的内容 题型一&#xff1a;寻找“单身狗”。 1.1题目解析 在一个整型数组中&#xff0c;只有…

Spring 使用注解储存对象

文章目录 前言存储 Bean 对象五大注解五大注解示例配置包扫描路径读取bean的示例 方法注解 Bean Bean 命名规则重命名 Bean 前言 通过在 spring-config 中添加bean的注册内容&#xff0c;我们已经可以实现基本的Spring读取和存储对象的操作了&#xff0c;但在操作中我们发现读…

MySQL DAL单表练习一(学生表)

目录 步骤&#xff1a; 1、创建学生表 2、插入数据 1&#xff09;查询表中所有学生的信息 2&#xff09;查询表中所有学生的姓名和英语成绩 3&#xff09; 过滤表中的重复数据 4&#xff09; 统计每个学生的总分 5&#xff09; 所有学生总分上加上10 6&#xff09; 使…

Java实现COM串口通信

前言 本文主要是实现监听电脑的 com3串口数据 Honeywell的一个扫描识别的器插入 Window笔记本的USB接口。 我的电脑是 Window11的&#xff0c;不需要安装驱动&#xff0c;它自己就有一个 COM3的串口 我把这玩意儿插在我的我电脑的USB接口过后&#xff0c;在电脑的 设备管理器就…

python条件分支和循环语句

python中没有{}的写法&#xff0c;一般时通过缩进的方式来确定分支和循环需要执行的代码块。 if 需要判断的条件表达式:条件成立时的动作 elif 需要判断的条件表达式:条件成立时的动作 else:动作for 变量 in 迭代对象:动作 示例&#xff1a; while 退出条件:动作