从 01 开始 从 01 开始
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

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

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

    • Spring基础
  • 主流框架

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

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

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

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 2022
  • 2023
  • 2024
  • 2025
  • 关于本站
  • 关于博主
  • 网站动态
  • 公告栏
  • 友人帐
  • 从零开始搭建一个博客
  • 搭建邮件服务器
  • 本站分享
  • 文章分类
  • 文章归档

晓林

程序猿,自由职业者,博主,英语爱好者,健身达人
首页
  • 计算机简史
  • 数字电路
  • 计算机组成原理
  • 操作系统
  • Linux
  • Docker
  • 计算机网络
  • 计算机常识
  • Git
  • 数据库
  • JavaSE
  • Java 高级
  • JavaEE

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

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

    • Spring基础
  • 主流框架

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

    • SpringMVC 基础
  • SpringBoot

    • SpringBoot 基础
  • Node
  • Windows 使用技巧
  • 最全面的输入法教程
  • 浏览器
  • 终端软件
  • 装机
  • 笔记类软件
  • Markdown
  • 各大平台
  • 远程控制
  • RSS
  • 图片类工具
  • Office
  • 手机
  • 校招
  • 五险一金等
  • 职场规划
  • 关于离职
  • 杂谈
  • 教程简介
  • 英语学习方法论
  • 字母
  • 音标
  • 单词
  • 语法
  • 英语兔的相关视频
  • Larry 想做技术大佬的相关视频
  • 驾驶技能
  • 住房相关
  • 厨艺
  • 关于税
  • 理财
  • 睡眠
  • 皮肤
  • 口腔健康
  • 学会呼吸
  • 健身日志
  • 电影

    • 电影推荐
  • 漫画

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

    • Steam
    • 三国杀
    • 求生之路
  • 反腐
  • GFW
  • 404 内容
  • 审查与自我审查
  • 互联网
  • 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

  • 计算机网络

  • Git

  • 计算机小知识

  • 数据库

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

102-冯·诺依曼结构的要点

# 102-冯·诺依曼结构的要点

现在的计算机形态各异,但是究其本质,几乎全部采用了冯诺依曼结构。 要了解计算机,首先要知道什么是冯诺依曼结构。当然,冯诺依曼结构的内涵是非常丰富的。 在这一节,我们先来探究其中的一些要点。

‍‍

要说冯诺依曼结构, 我们就要从《EDVAC 的报告草案》中说起。 在冯诺依曼署名编写的这份报告中,详细描述了 EDVAC 这台计算机的设计方案。 从那之后一直到现在,绝大多数计算机都基于这个结构进行设计。 这样的结构就被称为冯诺依曼计算机结构, 简称冯诺依曼结构。

‍

这是这份报告当中的一页。 我们可以看到下方还有 EDVAC 的字样。这份报告长达 101 页, 虽然最终并未完稿,但其内容已经非常的丰富。 主要论述了两个重要的思想。

第一, 控制计算机的程序应该存放在存储器中,而不是有开关连线来实现。 开关连线会大大降低计算机的运行效率。

第二, 计算机应该采用二进制,而不是十进制。 十进制的的方式会导致计算机的内部结构变得异常的复杂。

​

‍

‍

这份报告还明确了计算机的内部结构应该有五个部分组成。 包括运算器、控制器、存储器、输入设备和输出设备。 我们想要了解这五个部分的含义,不妨先来看一个小例子。 让我们跨越到 70 年代。 在 1971 年,诞生了世界上第一个商业微处理器。Intel4004 。图中这颗金色的芯片就是 4004. 它的面积很小,面积为 4.2mm×3.2mm,采用了 10 微米的制造工艺。内部晶体管 2250 个 ,主频最高 740KHz,字长是 4 位 。那么跟今天相比,它的各项指标都显得非常落后了。 现在的微处理器制造工艺已经达到了 10 纳米这个量级, 晶体管数量甚至可以达到数十亿。而主频也提高了几千倍。

字长现在常用的是 64 位或者 32 位。 但是如果跟冯诺依曼所处的时代相比,4004 已经拥有了非常不错的性能。 实际上 4004 拥有与 ENIAC 相当的性能 。那 4004 是用来做什么的呢?其实他最初的目的并不是用来制造计算机的。 这就是 4004 最初的产品。 大家看是什么? 其实他就是一个计算器。和我们现在经常拿在手上用的是同一个类型。 那么当时,正是应日本一家生产计算器的厂商的要求, intel 才设计了 4004.

​

‍

那我们把这台机器打开看一看。 这是这台机器的主板。我们把一个局部放大。 中间这块金色的芯片自然就是 4004 ,他旁边这块芯片是 4001 是一块只读的存储器。它里面存放着一些指令。 但是只能读,不能写。它的特点是断电以后 ,内容不会丢失。4004 左边这块是 4002. 是一块随机存储器。它的特点在于可以很方便的进行读和写。 但是断电以后内容那个就会丢失。那么 4003 呢 是移位计算机的芯片, 那么实际用来负责进行输入和输出。 那我们可以看到 4004 之所以叫做 4004 ,其实它还有一帮兄弟,从 4001、4002 到 4003 那么他们和 4004 一起呢构成了一个完整的芯片组。 这个芯片的组合被称为 MCS 那这张照片是这个芯片组的另一种实现。 同样也连接了这个计算器的键盘和打印机的输出。 虽然这只是一个计算器,还算不上一台计算机, 但他和冯诺依曼结构有着简洁明了的对应关系。

‍

‍

首先 4004 作为微处理器 或者叫 CPU,其实包含了运算器和控制器的功能。 4002 对应着存储器。 而键盘通过一片 4003 进行连接构成了输入设备。 另一片 4003 连接了打印机,构成了输出设备。

在这里我们就可以看到 这个计算器其实非常简洁明了的对应了冯诺依曼结构。 至于 4001 他并不属于我们现在要说的冯诺依曼结构的五大组成部分。 但是在冯诺依曼结构当中也有它的一席之地, 这一点我们以后再说。

​

‍

好,回来看冯诺依曼结构的要点。 冯诺依曼结构中规定了计算机的五大组成部分。

第一部分,运算器。简称 CA ,这是英文中央算术运算 Central arithmetical 的缩写。

第二部分控制器。简称 CC 这是中央控制 Central Control 的缩写。

存储器,简称 M,Memory

输入设备,简称 I,Input

输出设备,简称 O,Output

‍

这五大部分连接形成一体。就构成了冯诺依曼结构的计算机。 那么冯诺依曼结构,除了说明计算机应该由这五大部分组成之外,还指出计算机的数据和程序均已二级制代码的形式,不加区别的存放在存储器中, 存放的位置由存储器的地址指定。第三, 计算机在工作时能够自动的从存储器中取出指令加以执行。

​

当然这份报告中描述内容还有很多。我们先来看这几点。 其实第二点和第三点,其核心内容就是我们所说的存储程序的概念。 那我们就围绕着运算器、控制器和存储器这一部分,先来看一看存储程序到底指的是什么。

‍

‍

运算器、控制器和存储器 是冯诺依曼结构的核心,如果要与现代计算机进行对照的话,运算器和控制器应该对应于现在计算机中的 CPU, 而存储器应该对应于现在计算机中的主存储器。 我们又常称之为主存或者内存。 CPU 和主存储器之间一般通过系统总线进行连接。

​

‍

我们以个人计算机为例 在这块个人计算机的主板上会有 CPU 芯片,主存,通过主板上的系统总线进行连接。

​

‍

首先我们来看主存是如何组织的。 我们要关注两个名词。一个是地址,一个是内容。 地址是指每个存储单元对应的序号。一般是从 0 开始 0、1、2、3 逐个编制。在这里我们是用二进制进行表示的。 而内容是指存储单元中存放的信息。 在现在的计算机当中一般一个存储单元就是一个字节。 也就是 8 个二进制位。

组成的地址和内容的关系我们再来解释一下。 就好比有这么一个货架。这个货架有四层。 那我们为每一格进行一个编号。 那么编为第 0 格、第 1 格、第 2 格、第 3 格、 这些编号就相当于主存的地址。 而货架上存放的物品就是贮存的内容。 主存中存放的就是我们计算机当中所需要使用的程序和数据 。

​

‍

‍

那么存储程序的概念又是如何体现的呢?我们一起来看。 如果把冯诺依曼结构的计算机比作一个餐馆的话, 其中的 CPU 就好比是厨房,主存好比是餐馆当中的仓库 。在 CPU 当中大厨自然是 控制器,运算器呢就好比是厨具。 你给了他不同的原料,经过运算以后就可以得到相应的结果。 那么在仓库当中就放满着我们刚才所说过的那样的货架。 有很多,而且货架是被连续编号的。第一个货架 编了 0,1,2,3,第二个是 4567。后面我们应该还能看到有很多的货架。 那么这些货架上放的是什么呢?我们会看到这里有一些像一张一张纸一样的 东西,它就是这个餐馆厨师会要用到的任务单,上面会写着要你这个厨师接下来该做一些- 什么事。 一张任务单上写着一条指令。可能是要你炒一个菜,也可能要你从厨房搬个东西, 这都有可能。

对于计算机来说这就是一条一条的指令。 若干条的指令就可以组合成一个程序。 把这个程序存放在存储器当中, 这就是存储程序的一个很重要的概念。 后面这些蔬菜实际上就是餐馆的原料了,就相当于计算机当中的数据。 这里就体现出了冯.诺依曼结构当中所说的 ,将程序和数据不加区分的存放在存储器当中。

​

‍

‍

那么不是冯.诺依曼结构又是什么样的呢? 就好比这个餐馆里的库房里存放的全是原料,就是这些蔬菜,原料。 没有这些任务单,厨师的任务呢是通过别的方式发布给厨师的。 比如说要通过餐馆的经理,直接把任务单送到厨师这来,送一张任务单厨师就完成一项任务,这就是 ENIAC 的工作方式。 那大家觉得这样有什么不好呢?这似乎更自然一些,我们现实生活中也是这样的,哪有把厨师要做的任务单跟这些蔬菜放到一起呢。对吧,前提在于现实生活中这样的运转可能没有问题,餐馆经理给厨师下达的任务单速度也挺快,送来一张任务单,厨师做一盘菜,过一会儿又送来一张任务单,厨师再做一盘菜。 衔接是非常合适的。对于计算机来说,它的要点在于 CPU 运转的很快,即使 ENIAC 那个时候速度也是相当快的, 而外部人们能给它下指令的速度太慢了,

我们想象一下这个餐馆如果开在 火星,我们一次已经把他做菜所需要的原料运到这火星这个餐馆的仓库里了,但是厨师要做的- 事情呢却是 由我们地球上的这个经理一张一张任务单送过去,我们现在到火星送一张任务单过去可能要 花一年的时间,厨师收到这张任务单以后,很快就从仓库里取来蔬菜,然后做了一盘菜可能就- 花十分钟的时间, 然后他怎么办呢?只能坐在那接着等第二张任务单,因为他不知道下面该做什么了。再等一年- 再收到一张任务单,再花十分钟做一盘菜。 这样的效率,大家看到,是非常低的,这正好就是 ENIAC 的工作方式。

​

现在我们就能明白了冯.诺依曼结构中存储程序的概念。 计算机所需要的程序和数据,通过输入设备进入了存储器, 控制器发出地址给存储器,获得程序当中的对应的指令,还可以得到相应的数据。控制器发命令给运算器, 指挥运算器对数据进行相应的运算, 运算器可能会返回一些运算的状态,比如说是否正确完成等等。 最后还会将运算的结果存放到存储器中。 最后还需要通过输出设备, 将结果输出到计算机外部的某些存储介质上。 这样才能完成整个计算的过程。

现在我们已经知道了冯·诺依曼结构中最重要的部分, 那这个结构又是如何运转的呢? 下一节我们将通过一个小故事来了解这一点。

上次更新: 2024/9/29 12:08:10
101-电子计算机的兴起
103-冯·诺依曼结构的小故事

← 101-电子计算机的兴起 103-冯·诺依曼结构的小故事→

最近更新
01
2025 年 2 月记
02-28
02
最全面的浏览器教程-完结撒花
02-16
03
这个工具可以轻松搞到你的浏览器账户密码!
02-15
更多文章>
Theme by Vdoing | Copyright © 2022-2025 | 粤 ICP 备 2022067627 号 -1 | 粤公网安备 44011302003646 号 | 点击查看十年之约
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式