从 01 开始 从 01 开始
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 📚 计算机基础

    • 计算机简史
    • 数字电路
    • 计算机组成原理
    • 操作系统
    • Linux
    • 计算机网络
    • 数据库
    • 编程工具
    • 装机
  • 🎨 前端

    • Node
  • JavaSE
  • Java 高级
  • JavaEE

    • 构建、依赖管理
    • Ant
    • Maven
    • 日志框架
    • Junit
    • JDBC
    • XML-JSON
  • JavaWeb

    • 服务器软件
    • 环境管理和配置管理-科普篇
    • Servlet
  • Spring

    • Spring基础
  • 主流框架

    • Redis
    • Mybatis
    • Lucene
    • Elasticsearch
    • RabbitMQ
    • MyCat
    • Lombok
  • SpringMVC

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Windows 使用技巧
  • 手机相关技巧
  • 最全面的输入法教程
  • 最全面的浏览器教程
  • Office
  • 图片类工具
  • 效率类工具
  • 最全面的 RSS 教程
  • 码字工具
  • 各大平台
  • 校招
  • 五险一金
  • 职场规划
  • 关于离职
  • 杂谈
  • 自媒体
  • 📖 读书

    • 读书工具
    • 走进科学
  • 🌍 英语

    • 从零开始学英语
    • 英语兔的相关视频
    • Larry 想做技术大佬的相关视频
  • 🏛️ 政治

    • 反腐
    • GFW
    • 404 内容
    • 审查与自我审查
    • 互联网
    • 战争
    • 读书笔记
  • 💰 经济

    • 关于税
    • 理财
  • 💪 健身

    • 睡眠
    • 皮肤
    • 口腔健康
    • 学会呼吸
    • 健身日志
  • 🏠 其他

    • 驾驶技能
    • 租房与买房
    • 厨艺
  • 电影

    • 电影推荐
  • 电视剧
  • 漫画

    • 漫画软件
    • 漫画推荐
  • 游戏

    • Steam
    • 三国杀
    • 求生之路
  • 小说
  • 关于本站
  • 关于博主
  • 打赏
  • 网站动态
  • 友人帐
  • 从零开始搭建博客
  • 搭建邮件服务器
  • 本站分享
  • 🌈 生活

    • 2022
    • 2023
    • 2024
    • 2025
  • 📇 文章索引

    • 文章分类
    • 文章归档
  • 计算机简史

  • 数字电路

  • 计算机组成原理

    • 计算机组成原理(北大-陆俊林)

      • 概述-计算机组成原理(北大-陆俊林)
      • 第1周-计算机组成章节视频简介
      • 101-电子计算机的兴起
      • 102-冯·诺依曼结构的要点
      • 103-冯·诺依曼结构的小故事
      • 104-计算机结构的简化模型
      • 105-计算机执行指令的过程
      • 106-计算机输入和输出
      • 107-冯诺依曼结构和具体实现
      • 201-设计自己的计算机
      • 202-x86 体系结构
      • 203-x86 指令简介
      • 204-复杂的 x86 指令举例
      • 205-MIPS 体系结构
      • 206-MIPS 指令简介
      • 301-算术运算和逻辑运算
      • 302-门电路的基本原理
      • 303-寄存器的基本原理
      • 304-逻辑运算的实现
      • 305-加法和减法的实现
      • 306-加法器的优化
      • 401-乘法的运算过程
      • 402-乘法器的实现
      • 403-乘法器的优化 1
      • 404-乘法器的优化 2
      • 405-除法的运算过程
      • 406-除法器的实现
      • 407-除法器的优化
      • 501-处理器的设计步骤
      • 502-数据通路的建立
      • 503-运算指令的控制信号
      • 504-访存指令的控制信号
      • 505-分支指令的控制信号
      • 506-控制信号的集成
      • 601-流水线的基本原理
      • 602-流水线的优化
      • 603-超标量流水线
      • 604-流水线的冒险
      • 605-数据冒险的处理
      • 606-控制冒险的处理
      • 701-存储层次结构概况
      • 702-DRAM 和 SRAM
      • 703-主存的工作原理
      • 704-主存技术的发展
      • 705-高速缓存的工作原理
      • 706-高速缓存的组织结构
      • 707-存储容量的计算
      • 801-中断和异常的来源
      • 802-中断向量表的结构
      • 803-中断向量表的发展
      • 804-中断的处理过程
      • 805-内部中断分类说明
      • 806-基于中断的功能调用
      • 901-输入输出接口的基本功能
      • 902-输入输出接口的编址方式
      • 903-输入输出的控制方式
      • 904-中断控制方式
      • 905-外部中断的处理过程
      • 906-直接存储器访问方式
    • 字符编码入门

  • 操作系统

  • Linux

  • 计算机网络

  • 数据库

  • 编程工具

  • 装机

  • 计算机基础
  • 计算机组成原理
  • 计算机组成原理(北大-陆俊林)
2023-06-13

103-冯·诺依曼结构的小故事

# 103-冯·诺依曼结构的小故事

如果一开始就深入到计算机内部的复杂结构中,也许会让人有些迷惘。我们还是用一个轻松愉快的方式来入手。通过一个餐馆的小故事来了解冯诺依曼结构是如何运转的。

‍‍

冯诺依曼结构的计算机就好比这个餐馆, CPU 就是厨房,而主存就是仓库, 仓库里的货架就好比主存当中的存储单元,我们为货架的每一格都编上了一个序号,相当于主存当中的地址,货架上存放的物品相当于存储单元当中的内容, 主存中会存放着计算机的指令,还有数据,对于这个餐馆来说就是厨师需要执行的任务和做菜所用的原料,那厨房当中 承担主要控制任务的就是这位大厨了,它也是控制器,而运算器则是出具。

那我们还需要一些附加的设备。这个厨师记性很不好,他必须要在身边 有一张纸,上面写着下一张任务单的位置,这里这张纸上写了 1,厨师就知道我下一张任务单放在仓库的第一格, 那么如果把任务单取回来以后,还需要放在身边随时的查看所以他还可以有一个放置当天任务单的位置。如果取来了任务单就放在这。

那厨师做菜,做完了菜放哪呢,不能直接端着锅冲到仓库去吧。所以他身边操作台上总得放几个盘子, 相当于 CPU 当中我们就称这些盘子为通用寄存器,用于临时存放计算器的运算结果或者要送到运算器的操作数。

我们有可能从主存当中事先会取来一些操作数,当然也需要执行指令去取来一些操作数,先放到通用寄存器当中。

​

那好这个餐馆是如何运转的呢? 我们就让它像计算机的运转一样,计算机运转的核心内容就是执行指令, 计算机执行一条指令的主要步骤呢包括如下四步,

第一步叫做取指,第二部叫做译码, 第三部称为执行,第四部是回写。

依次执行完这四步,计算机就完成了一条指令的执行。

​ ‍

那我们就来看看这个冯诺依曼结构的餐馆是如何像计算机一样执行指令的。现在我们假设这个餐馆处在这样一个状态,

​ ‍

厨师第一步要做的事情就是查看下一张任务单的位置在哪,我要去取这张任务单了,我一查,发现是 1,我向主存发送了请求我需要第一格的物品,他并不知道第一格存放的是什么,他只是根据这里的编号向主存发出申请,哎,主存并不简单是一些货架,这就完成了第一步,取任务单的工作。而实际上这一步呢还需要有一项任务,就是更新下一张任务单的位置。第一格取完了他还是要有一些控制逻辑,那么这类控制逻辑就会响应控制器的请求, 需要第一格的物品,他就找到了第一格的物品,把第一格的物品给送回去了,厨师收到了任务单了,就把他放在身边存放当前任务单的位置,等这件事做完之后下一次再去取任务单的时候再去取下一格,就把它更新为 2,注意不是现在取第二格,只是先更新,等一会去执行下一条指令的时候再根据这个位置去向主存发出请求。

​

好,那这样的话取任务单的这一步就算真正的完成了。

第二步,在计算机当中称之为译码, 对于这个厨师来说,就是分析刚才拿到的任务单。看这个任务单上写了这么几条。

第一呢说明了这项任务所需要用的方法。

第二呢说明了这项任务所需要的原料。

看来这个原料有两个位置,一个字仓库, 一个在他身边的盘子里。最后这项任务完成了以后,看起来是炒一盘菜,那么炒完之后呢还得把成果存放在某个地方,这个任务单上也指定了,存放在 A 号的盘子里。好,这个任务就分析完了。控制器就把他转换成若干组的控制信号一一完成,这样译码这个阶段就算完成了。

​ ‍

第三步,对计算机执行指令是其核心的步骤,就叫做执行。对程式来说一样,执行这个已经分析完的任务, 这个任务一共有 4 步,你先完成第一步,第一步是要去取第六格的物品。好,与刚才一样,向主存发出请求说我需要第六格的物品,主存会响应,把第六格的物品送过来。由于这次是取运算要用的操作数,所以返回的物品呢控制器就会把它放在运算器的其中一个入口,

然后第二步是取这个运算的第二个操作数。其实这是放在 A 号盘子里的,就在厨师身边,很快就可以拿到。

那么第三步是执行这项运算,那么控制器会给出对应的信号给运算器,让它执行对应的运算, 经过短暂的时间之后呢运算就完成了,运算结果也产生了。好,执行阶段就到此结束了。

​

但是我们发现现在运算结果还放在运算器的这个输出端口上。我们必须要把它转移到另外的地方,根据这条指令的要求,运算的结果应该是存放在 A 号的通用计算器里。

好,那我们在最后一步回写也就是保存结果的时候呢,用控制器把这个运算结果存放在 A 号的通用器当中, 这样我们就完成了执行指令的全部过程。

​ ‍

做完了这条指令,控制器也不会闲着,接着来执行下一条指令。它就会去查看下一张任务单的位置, 跟刚才执行前一条指令的第一步是一样的,先去查看下一张任务单的位置,发现是 2,那么就向主存发出所需要第二格的物品,然后主存就会把第二格的任务单返回来,注意我们取回来以后呢要自动更新成下一张任务单的位置, 之后再做 3,这个更新完以后我们就像刚才一样,继续 分析当前取回来这张任务单并完成它所指定的任务,最后保存结果,然后再去取下一条指令。不断的重复,计算机就会自动的运转起来了。

​

这个餐馆的工作的过程其实就是我们计算机执行指令的过程。CPU 从主存中取出对应的指令,那么刚才厨师做的那项任务呢对于计算机当中很可能是这样的,CPU 当中寄存器 A 有一个内容,然后主存的地址为 6 的这个单元里有这样的内容,CPU 根据这条指令把主存中地址为 6 的单元的内容取出来,并把 CPU 内部寄存器 A 的内容取出来, 可能执行一个加法,然后把运算的结果更新到寄存器 A 当中, 这样就完成了一条加法指令的运算。

​

这个冯诺依曼结构的餐馆向我们展示了计算机运行的基本原理,不过餐馆仅仅是餐馆,从下一节我们就要开始探索真正的计算机的内部结构。不用担心,其实没有那么复杂。 ‍

上次更新: 2025/5/9 14:55:39
102-冯·诺依曼结构的要点
104-计算机结构的简化模型

← 102-冯·诺依曼结构的要点 104-计算机结构的简化模型→

最近更新
01
学点统计学:轻松识破一本正经的胡说八道
06-05
02
2025 年 5 月记
05-31
03
《贫穷的本质》很棒,但可能不适合你
05-27
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式