冯·诺依曼模型

概述

计算机运行前提:

  1. 任务描述
  2. 计算机本身的运行能力

组成部分

  1. Memory
  2. Processing Unit
  3. Input
  4. Output
  5. Control Unit 20181204175954.png

内存

结构:门电路和锁存器组成 门电路: 与或非门 锁存器:

  1. R-S锁存器

rs锁存器.png 一开始处于静态: R = 1,S = 1 假设:输出 a= 1,则A=1, 由与非门特性得到b=0,即B=0,继而得到a=1 相反,输出 a= 0,则A=0, 由与非门特性得到b=1,即B=1,继而得到a=0 结论: 只要输入的值R S都保持为1时,输出a的值就不变 => “记忆”能力或存储能力 写入:保持R=1不变,set S=0,则输出a= 1, 同理,相反亦如此。

  1. 门控D锁存器 门控d锁存器.png

WE => Write Enable 当且仅当 WE=1时,才使得输出值等于D

寻址空间: 能最多用到多少内存 寻址能力:每个内存位置中包含的bit数目 32位操作系统最大可接受内存: 2^32/1024/1024/1024 = 4G 64位操作系统最大可接受内存: 2^64/1024/1024/1024 = 17179869184G 例:      4G内存条的寻址空间:2^32

内存的读操作

  1. 向内存提供被访问内存单元的地址
  2. 将被访问内存单元的地址放入CPU的内存地址寄存器(Memory Address Register,MAR)
  3. 发送读信号通知内存
  4. 内存将该单元中存放的数据传送至内存数据寄存器(Memory Data Register,MDR)

内存的写操作

  1. 向内存提供被访问内存单元的地址
  2. 将内存单元的地址放入MAR
  3. 将写入的数据放入MDR
  4. 发送读信号通知内存
  5. MDR的内容写入MAR指向的内存单元

处理单元: 信息真正被处理的地方

  • 现代计算机有很多单元组成,每个功能单元负责一个功能。

最简单的功能单元–ALU(Arithmetic Logical Unit)。(冯·诺依曼体系中唯一的功能单元)

功能: 基本运算add,subtract…, 基本逻辑运算and,or,not

临时存储器:通常会在ALU附近配置少量寄存器,一边存放中间计算结果,以免引起不必要的内存访问。常见的设计是一组寄存器,其中每个寄存器宽度与ALU能处理数据的宽度一致。

IO单元

输入:键盘,鼠标,硬盘。。。。。 输出:显示器,硬盘。。。。。

控制单元: 控制其他单元协同工作。

在计算机程序逐步执行过程中,既控制程序执行的每一步,又负责控制其中每条指令执行过程的每一步。

最重要的一个结构:有限状态机

有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 组成:

  1. 状态(有限数目)
  2. 外部输入(有限数目)
  3. 对外输出(有限数目)

一个简单的状态图: 状态图.png

其中特殊的寄存器:

1. 指令寄存器(instruction register):保存正在执行的指令

2. PC寄存器(program counter):保存下一条被执行的指令

program counter or instruction pointer :程序计数器 还是 指令指针?

指令处理

冯·诺依曼的核心思想是:程序和数据都是以bit流形式存放在计算机内存中,程序在控制单元的控制下,依次完成指令的读取和执行。

指令:计算机最小执行单位,由操作码和操作数组成

指令周期

1. 取指令FETCH

(1) PC-(load)-» MAR (2) MAR -> MDR (3) 控制单元将MDR内容装入IR

2. 译码DECODE

IR指令寄存器中的指令会发送到指令译码部件。

3. 地址计算EVALUATE ADDRESS

如果存在地址计算,则执行此步骤

4. 取操作数FETCH OPERAND

读取指令处理所需要的源操作数

5. 执行EXECUTE

执行需要处理单元控制的操作

6. 存放结果STORE RESULT

将之前的执行结果写入目的寄存器

示例(8个寄存器R0~R7,且寻址模式为基址+偏移量的计算机)

给定一条加操作命令:

0 0 0 11 1 00 1 000 01 1 0
addR6R2第二个源操作数寻址方式占位R6

给定一条LDR操作命令:

0 1 1 00 0 10 1 00 1 1 1 0 1
LDRR1R2X1D

ldr关键步骤.png

实例图.png