概述
计算机运行前提:
- 任务描述
- 计算机本身的运行能力
组成部分
- Memory
- Processing Unit
- Input
- Output
- Control Unit
内存
结构:门电路和锁存器组成 门电路: 与或非门 锁存器:
- R-S锁存器
一开始处于静态: 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, 同理,相反亦如此。
- 门控D锁存器
WE => Write Enable 当且仅当 WE=1时,才使得输出值等于D
寻址空间: 能最多用到多少内存 寻址能力:每个内存位置中包含的bit数目 32位操作系统最大可接受内存: 2^32/1024/1024/1024 = 4G 64位操作系统最大可接受内存: 2^64/1024/1024/1024 = 17179869184G 例: 4G内存条的寻址空间:2^32
内存的读操作
- 向内存提供被访问内存单元的地址
- 将被访问内存单元的地址放入CPU的内存地址寄存器(Memory Address Register,MAR)
- 发送读信号通知内存
- 内存将该单元中存放的数据传送至内存数据寄存器(Memory Data Register,MDR)
内存的写操作
- 向内存提供被访问内存单元的地址
- 将内存单元的地址放入MAR
- 将写入的数据放入MDR
- 发送读信号通知内存
- MDR的内容写入MAR指向的内存单元
处理单元: 信息真正被处理的地方
- 现代计算机有很多单元组成,每个功能单元负责一个功能。
最简单的功能单元–ALU(Arithmetic Logical Unit)。(冯·诺依曼体系中唯一的功能单元)
功能: 基本运算add,subtract…, 基本逻辑运算and,or,not
临时存储器:通常会在ALU附近配置少量寄存器,一边存放中间计算结果,以免引起不必要的内存访问。常见的设计是一组寄存器,其中每个寄存器宽度与ALU能处理数据的宽度一致。
IO单元
输入:键盘,鼠标,硬盘。。。。。 输出:显示器,硬盘。。。。。
控制单元: 控制其他单元协同工作。
在计算机程序逐步执行过程中,既控制程序执行的每一步,又负责控制其中每条指令执行过程的每一步。
最重要的一个结构:有限状态机
有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 组成:
- 状态(有限数目)
- 外部输入(有限数目)
- 对外输出(有限数目)
一个简单的状态图:
其中特殊的寄存器:
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 1 | 1 1 0 | 0 1 0 | 0 | 0 0 | 1 1 0 |
---|---|---|---|---|---|
add | R6 | R2 | 第二个源操作数寻址方式 | 占位 | R6 |
给定一条LDR操作命令:
0 1 1 0 | 0 0 1 | 0 1 0 | 0 1 1 1 0 1 |
---|---|---|---|
LDR | R1 | R2 | X1D |