【Linux系统编程】——理解冯诺依曼体系结构

news2024/12/27 7:23:42

文章目录

  • 冯诺依曼体系结构硬件
  • 当代计算机是性价比的产物
  • 冯诺依曼的存储
  • 冯·诺依曼的数据流动步骤
  • 冯·诺依曼结构总结

冯诺依曼体系结构硬件

下面是整个冯诺依曼体系结构在这里插入图片描述
冯·诺依曼结构(Von Neumann Architecture)是现代计算机的基本结构之一,由数学家约翰·冯·诺依曼在20世纪40年代提出。这种结构被广泛应用于现代计算机设计中,其核心思想是将程序和数据存储在同一存储器中,通过共享一套硬件实现灵活的操作。以下是冯·诺依曼结构的基本组成部分及特点

基本组成部分

  1. 中央处理器(CPU)是计算机的核心部件,主要负责执行指令和处理数据。它由两个主要部分组成:控制器和运算器。
    控制器(Control Unit, CU)
    控制器是CPU的核心部分之一,它的主要任务是负责指挥和协调整个计算机的工作。
    运算器(Arithmetic Logic Unit, ALU)
    运算器是CPU的另一个核心部分,它的主要任务是执行各种算术和逻辑运算。
    控制器和运算器的协作
    控制器负责指挥:它从存储器中取指令并解释,然后决定交给运算器执行哪些操作。
    运算器负责执行:控制器指示运算器完成具体的计算任务,运算器返回结果。
    两者通过寄存器和总线通信:例如,控制器通过寄存器或总线将操作数提供给运算器,运算器计算完后将结果存储在指定位置。

  2. 存储器(Memory)
    用于存储数据和指令,二者共享存储空间。
    数据和指令以二进制形式存储在存储器中。

  3. 输入设备(Input Devices)
    用于将外部数据和指令输入到计算机中,常见的输入设备有:键盘、鼠标、磁盘、u盘、网卡、摄像头、话筒等等。

  4. 输出设备(Output Devices)
    用于将处理结果输出到外部,常见的输出设备有: 显示器、播放器硬件、磁盘、网卡等等。

关于冯诺依曼,必须强调⼏点:
• 这⾥的存储器指的是内存
• 不考虑缓存情况,这⾥的CPU能且只能对内存进⾏读写,不能访问外设(输⼊或输出设备)
• 外设(输⼊或输出设备)要输⼊或者输出数据,也只能写⼊内存或者从内存中读取。
• ⼀句话,所有设备都只能直接和内存打交道。

当代计算机是性价比的产物

在这里插入图片描述
芯片技术通过晶体管微缩、多核化和专用化,实现性能提升与成本下降的同步。
摩尔定律为芯片技术发展提供了方向和节奏,推动性能的指数增长和单位成本的显著下降。
这两个因素的结合使现代计算机能够以相对低廉的价格提供强大的计算能力,从而成为性价比的典范。

冯诺依曼的存储

注意, 是存储, 不是存储器。
在这里插入图片描述
存储等级
首先这里要对上面这张图进行解释。 对于计算机整个结构来说, 一共有这么多层存储结构。 第一层是寄存器, 然后是一级存储,二级存储, 三级存储, 内存以及磁盘。 这些存储结构, 从上到下容量越来越大, 速度越来越慢, 价格越来越低。

对于寄存器和内存以及磁盘的存储速度来说: 寄存器的速度可以达到纳秒级别, 然后内存的速度可以达到微妙级别, 外存的速度可以达到毫秒级别。 也就是说, 三个存储结构的相差级次达到了10的三次方。

冯·诺依曼的数据流动步骤

  1. 数据流动的基本路径
    冯·诺依曼结构中数据的流动主要在以下几个组件之间进行:
    存储器(Memory)
    中央处理单元(CPU,包括控制器和运算器)
    输入设备和输出设备

    数据和指令通过系统总线(包括数据总线、地址总线和控制总线)在这些组件之间传递。
    基本过程
    指令和数据的获取CPU通过地址总线从存储器中获取指令(程序指令)和相关数据。
    数据和指令通过数据总线传递到CPU。
    指令的解码
    获取的指令存储在指令寄存器(IR)中,由控制器解码。解码结果决定需要的操作(如加法、存储等)和操作数的位置。
    操作数的处理
    如果操作数不在寄存器中,CPU通过地址总线从存储器中读取操作数。
    操作数传递到运算器进行处理,处理后的结果存储在寄存器或存储器中。
    结果的存储或输出
    处理结果可以存储回存储器,也可以通过输出设备传递到外部。
  2. 数据流动的详细步骤
    取指(Fetch)
    控制器根据程序计数器(PC)的值,通过地址总线向存储器请求下一条指令。
    指令通过数据总线传递到CPU,存储在**指令寄存器(IR)中。
    解码(Decode)
    控制器解码指令,确定操作类型(如算术、逻辑、数据传输)和操作数的位置(寄存器或存储器)。
    执行(Execute)
    控制器向
    运算器(ALU)**发送信号,运算器对操作数进行计算或处理。
    操作数可以来自寄存器或通过总线从存储器中获取。
    存储(Store)
    运算器处理后的结果通过总线存储到存储器,或暂存在寄存器中以供后续指令使用。
  3. 数据流动的特点
    存储程序
    程序(指令)和数据共享同一个存储空间,数据和指令以相同方式传递和存储。
    线性流程
    数据流动通常按照“取指-解码-执行-存储”的线性流程进行,除非指令中包含跳转(如条件分支)。
    总线瓶颈
    数据和指令共享同一总线进行传输,导致“冯·诺依曼瓶颈”。这种瓶颈可能导致CPU等待数据或指令的传输而空转,从而降低性能。
    循环操作
    数据和指令在存储器、控制器和运算器之间不断循环,直到程序执行完成。
  4. 冯·诺依曼结构中数据流动的局限性
    冯·诺依曼瓶颈
    指令和数据共享同一总线,导致数据流动速度受限,尤其在高性能计算中表现明显。
    依赖存储器
    每次运算都需要从存储器中取指令或数据,这种存储器访问的延迟会限制整体性能。
    改进措施
    缓存(Cache):在CPU中增加高速缓存,减少存储器访问的频率。
    流水线技术:允许多个指令在不同阶段同时执行,提高数据流动效率。
    分离存储器架构:如哈佛结构,将指令和数据存储器分离,独立处理数据流动。

以上, 就是本节全部内容, 下面是本节的笔记

冯·诺依曼结构总结

核心思想
存储程序:程序和数据以相同的方式存储在同一存储器中,可以动态读取和修改。
顺序执行:计算机指令按照存储顺序逐条执行,除非遇到跳转指令。
统一硬件:数据和指令共享相同的存储器和传输通道(总线系统)。
基本组成
中央处理单元(CPU)
包括控制器:负责指挥计算机各部件的协调工作。
包括运算器(ALU):执行算术和逻辑运算。
存储器
用于存储数据和程序指令。
输入设备
用于将外部数据和指令输入到计算机。
输出设备
将计算结果输出给用户或其他设备。
总线系统
数据总线、地址总线和控制总线连接并协调各部件之间的数据流动。
数据流动
数据和指令通过存储器、CPU(控制器和运算器)及输入输出设备之间流动。
基本操作流程为:取指(Fetch)- 解码(Decode)- 执行(Execute)- 存储(Store),形成一个循环。

特点
简单性:设计结构统一,便于实现和扩展。
灵活性:可以动态加载和执行不同的程序。
共享性:指令和数据共享存储器和传输通道。
局限性
冯·诺依曼瓶颈:指令和数据共享同一存储器和总线,限制了数据传输速率,影响性能。
存储器依赖:频繁的存储器访问导致延迟,尤其在大规模数据处理时。
能耗问题:随着性能需求增长,存储器访问的能耗增加。
改进与发展
尽管存在瓶颈,冯·诺依曼结构通过以下技术得到了优化:

缓存(Cache):减少对主存的访问次数,缓解数据传输瓶颈。
流水线技术:多个指令在不同阶段同时执行,提高效率。
分离存储器架构:如哈佛架构,将指令和数据存储器分离,加快数据处理。
并行计算:多核和异构计算技术提升了现代计算机的性能。
冯·诺依曼结构是一种简单、灵活且高效的计算机设计模型,奠定了现代计算机体系结构的基础。尽管面临一定的性能瓶颈,现代计算机通过技术改进在冯·诺依曼模型的基础上实现了高效计算,使其成为现代计算设备性价比和普及化的重要推动力。

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

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

相关文章

微信创建小程序码 - 数量不受限制

获取小程序码:小程序码为圆图,且不受数量限制。 目录 文档 接口地址 请求方式 功能描述 注意事项 获取 scene 值 请求参数 返回参数 对接 请求方法 获取小程序码 调用获取小程序码 总结 文档 接口地址 https://api.weixin.qq.com/wxa/get…

JDK8 下载与安装

下载安装包 官网下载 官网 找到适合的版本: 网盘下载 网盘链接 提取码: 6666 下载得到的安装包: 安装步骤 双击安装包开始安装. 安装路径不要有中文或者特殊符号如空格等. 更改安装路径: 跳出一个页面, 安装公共 JRE: 安装完成: 安装目录: 安装的公共 JRE: JDK 里面的 JR…

笔记本电脑usb接口没反应怎么办?原因及解决方法

笔记本电脑的USB接口是我们日常使用中非常频繁的一个功能,无论是数据传输、充电还是外接设备,都离不开它。然而,当USB接口突然没有反应时,这无疑会给我们的工作和学习带来不小的困扰。下面,我们就来探讨一下笔记本USB接…

Axure设计之模拟地图人员移动轨迹

在产品原型设计时,为了更好的表达和呈现预期的效果,让客户或开发看一眼就能理解要实现的功能,往往需要在产品设计时尽量去接近现实,这就需要我们在使用Axure制作原型时应具有高度细节和逼真度的原型设计。原型设计不仅包含了产品的…

【配置查询】.NET开源 ORM 框架 SqlSugar 系列

.NET开源 ORM 框架 SqlSugar 系列 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列【Code First】.NET开源 ORM 框架 SqlSugar 系列【数据事务…

error=‘null‘], commandType=io.lettuce.core.RedisPublisher$SubscriptionCommand]

问题 查看java应用启动日志输出下面错误: errornull], commandTypeio.lettuce.core.RedisPublisher$SubscriptionCommand] Completing command LatencyMeteredCommand [typeINFO, outputStatusOutput [output# Server redis_version:4.0.14 redis_git_sha1:000…

Python 数据分析用库 获取数据(二)

Beautiful Soup Python的Beautiful Soup(常被称为“美丽汤”)是一个用于解析HTML和XML文档的第三方库,它在网页爬虫和数据提取领域具有广泛的应用。 作用 HTML/XML解析: Beautiful Soup能够解析HTML和XML文档,包括不…

915DEBUG-obsidianTemplater使用

Templater使用 tp函数不正常显示相应数据 模板使用方式不正确 <% tp.date.now("YYYY-MM-DD") %> 应该被放置在一个被Templater识别为模板的文件中&#xff0c;或者在你使用Templater的插入模板功能时输入。如果只是在一个普通的Markdown文件中直接输入这段代码…

美畅物联丨智能监控,高效运维:视频汇聚平台在储能领域的实践探索

在当今全球能源格局不断变化的大背景下&#xff0c;对清洁能源的需求正以惊人的速度增长。储能项目作为平衡能源供需、提升能源利用效率的关键环节&#xff0c;其规模和复杂度也在不断攀升。在储能项目的运营管理过程中&#xff0c;安全监控、设备运维以及数据管理等方面面临着…

华为NPU服务器昇腾Ascend 910B2部署通义千问Qwen2.5——基于mindie镜像一路试错版(三)

文章目录 前言纯模型推理启动服务后面干什么?这可咋整啊?愁死了!总结前言 这是咱这个系列的第三个文章了。 毕竟,这是我好几天摸索出的经验,能帮助各位在几个小时内领会,我觉得也算是我的功劳一件了。 所以,一是希望大家耐心看下去,耐心操作下去;而是恳请各位多多关…

【C++】—— set 与 multiset

【C】—— map 与 set 1 序列式容器和关联式容器2 set 系列的使用2.1 set 和 multiset 参考文档2.2 set 类的介绍2.3 set 的迭代器和构造2.4 set的增删查2.4.1 insert2.4.2 find 与 erase2.4.3 count 2.5 lower_bound 与 upper_bound2.6 multiset 与 set 的差异2.6.1 不再去重2…

`pnpm` 不是内部或外部命令,也不是可运行的程序或批处理文件(问题已解决,2024/12/3

主打一个有用 只需要加一个环境变量 直接安装NodeJS的情况使用NVM安装NodeJS的情况 本篇博客主要针对第二种情况&#xff0c;第一种也可参考做法&#xff0c;当然眨眼睛建议都换成第二种 默认情况下的解决方法&#xff1a;⭐⭐⭐ 先找到node的位置&#xff0c;默认文件夹名字…

JavaScript 键盘控制移动

如果你想通过 JavaScript 实现键盘控制对象&#xff08;比如一个方块&#xff09;的移动&#xff0c;下面是一个简单的示例&#xff0c;展示如何监听键盘事件并根据按下的键来移动一个元素。 HTML 和 CSS&#xff1a; <!DOCTYPE html> <html lang"en">…

【串口助手开发】visual studio 使用C#开发串口助手,生成在其他电脑上可执行文件,可运行的程序

1、改成Release&#xff0c;生成解决方案 串口助手调试成功后&#xff0c;将Debug改为Release&#xff0c;点击生成解决方案 2、运行exe文件 生成解决方案后&#xff0c;在bin文件夹下&#xff0c; Release文件夹下&#xff0c;生成相关文件 复制一整个Release文件夹&#xf…

通过HTML Canvas 在图片上绘制文字

目录 前言 一、HTML Canvas 简介 二、准备工作 三、绘制图片 四、绘制文字 五、完整代码 效果演示&#xff1a; 前言 HTML canvas 为我们提供了无限的创意可能性。今天&#xff0c;我们就来探索一下如何通过 HTML canvas 将图片和文字绘制到图片上&#xff0c;创造出独特…

Android ION Buffer

目录 背景介绍 ION内存管理机制主要解决了以下几个关键问题&#xff1a; ION的实际应用场景 背景介绍 ION是Android 4.0 ICS(Ice Cream Sandwich)引入的一个通用内存管理器&#xff0c;用于解决不同Android设备之间内存管理接口碎片化的问题。至少有三个或者更多类似PMEMM接…

qt程序开发环境部署

安装 sudo apt install qt5-default sudo apt install qtcreator sudo apt install g直接安装&#xff0c;linux的源里一般都有&#xff0c;如果没有&#xff0c;那就辛苦找下源了。。。 设置kit 然后启动qtcreator&#xff0c;构建套件&#xff0c;选择合适的编译器&#…

聊聊JVM G1(Garbage First)垃圾收集器

CMS的垃圾回收机制&#xff0c;为什么分为四步https://blog.csdn.net/genffe880915/article/details/144205658说完CMS垃圾回收器&#xff0c;必定要说到目前一般应用项目中都推荐的G1。G1在JDK1.7 update4时引入&#xff0c;在JDK9时取代CMS成为默认的垃圾收集器。它是HotSpot…

Vue框架开发一个简单的购物车(Vue.js)

让我们利用所学知识来开发一个简单的购物车 &#xff08;记得暴露属性和方法&#xff01;&#xff01;&#xff01;&#xff09; 首先来看一下最基本的一个html框架 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"&…

【机器学习】机器学习的基本分类-监督学习-决策树-C4.5 算法

C4.5 是由 Ross Quinlan 提出的决策树算法&#xff0c;是对 ID3 算法的改进版本。它在 ID3 的基础上&#xff0c;解决了以下问题&#xff1a; 处理连续型数据&#xff1a;支持连续型特征&#xff0c;能够通过划分点将连续特征离散化。处理缺失值&#xff1a;能够在特征值缺失的…