1
0
mirror of https://github.com/OmegaZhou/408-notes.git synced 2026-02-02 18:28:58 +08:00

finish computer organization

This commit is contained in:
Zhou
2020-08-30 19:57:43 +08:00
parent 77468a7bcf
commit 9e010b9306
10 changed files with 1455 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

@@ -0,0 +1,465 @@
# 中央处理器
## 功能和结构
### 功能
* CPU=运算器+控制器
* 运算器
* 对数据进行加工
* 控制器
* 协调控制各部件指令序列
* 取指令
* 分析指令
* 执行指令
* 控制程序的输入
* 控制运算结果的输出
* 对总线的管理
* 中断处理
* 总结
* 指令控制
* 操作控制
* 时间控制
* 数据加工
* 中断处理
### 结构
* 控制器
* 程序计数器PC
* 指令寄存器IR
* 指令译码器
* 存储器地址寄存器
* 存储器数据寄存器
* 时序系统
* 微操作信号发生器
* 运算器
* 算术逻辑单元ALU
* 暂存寄存器
* 累加寄存器
* 通用寄存器组
* 程序状态字寄存器
* 移位器
* 计数器:控制乘除运算的操作步骤
* 中断系统
* 寄存器
* 小快贵
## 主要寄存器
### 运算器中的寄存器
* 暂存寄存器
* 暂存从主存读来的数据
* 对程序员透明
* 累加寄存器ACC
* 暂时存放ALU的运算结果
* 通用寄存器组
* 状态条件寄存器
* 存放算术指令和逻辑指令运行或测试的结果,使用一位触发器
* 还可以保存中断和系统工作状态信息
### 控制器中的寄存器
* 程序计数器PC
* 指令寄存器IR
* 存储器数据寄存器MDR
* 作为CPU内存和外部设备之间信息传送的中转站
* 补偿CPU内存和外部设备之间再操作速度上的差别
* 在单累加器的运算器中,可兼做操作数寄存器
* 存储器地址寄存器MAR
## 指令执行过程
### 指令周期
* 指令周期包含若干**机器周期**,为执行一条指令所花的时间
* 不同指令的指令周期可能不同
* 一个机器周期包括若干个**时钟周期**
* 不同的机器周期时间可能不同
* 指令周期=取指周期+间址周期+执行周期+中断周期
### 指令执行方案
* 单指令周期
* 所有指令采用相同的执行时间
* 运行效率低
* 多指令周期
* 不同指令选用不同步骤,指令周期可以不同
* 流水线方案
### 指令周期的数据流
#### 取指周期
1. (PC)->MAR//发送指令地址至MAR
2. 1->R//发出读命令
3. M(MAR)->MDR//取出指令地址
4. (MDR)->IR
5. OP(IR)->CU
6. PC+1->PC
#### 间址周期
1. AD(IR)->MAR
2. 1->R
3. M(MAR)->MDR
#### 执行周期
* ,没有固定格式
#### 中断周期
## 数据通路功能和基本结构
### 数据通路的功能
* 实现CPU内部运算器和寄存器寄存器间的数据交换
### 数据通路基本结构
* CPU内部总线方式
* 使用单总线/双总线/多总线连接所有寄存器
* 使用双总线或多总线时,数据传递可以同时进行
* 结构简单
* 数据传输较多时可能会出现冲突,性能较低
* 专用数据通路方式
* 根据指令执行过程的数据流动安排线路
* 避免使用共享的总线
* 性能较高
* 硬件量较大
### 常见数据通路数据传输
#### 寄存器之间
1. R1->Bus //R1out有效
2. Bus->R2 //R2in有效
#### 主存与CPU之间
1. R1->Bus->MAR //R1out,MARin有效
2. 1->R
3. M(MAR)->MAR //MDRin有效
4. MDR->Bus->R2 //MDRouR2in有效
#### 执行算术运算或逻辑运算
1. Ad(IR)->Bus->MAR
2. 1->R
3. M(MAR)->MDR
4. MDR->Bus->R1
5. (ACC)OP(R1)->R2(暂存器)
6. R2->ACC
## 控制器功能和工作原理
### 硬布线控制器
#### 微操作命令示例
##### 执行周期
###### 加法指令
* 前提一个操作数在累加器一个在主存A单元结果存入累加器
* 步骤
1. Ad(IR)->MAR
2. 1->R
3. M(MAR)->MDR
4. (ACC)+(MDR)->ACC
###### 存数指令
* 前提将上述累加器结果存入地址单元A
* 步骤
1. Ad(IR)->MAR
2. 1->W
3. (ACC)->MDR
4. (MDR)->M(MAR)
##### 中断周期
###### 断点存储在主存
* 前提假设断点保存至主存的0单元采用硬件向量寻找中断地址
* 步骤
1. 0->MAR
2. 1->W
3. (PC)->MDR
4. (MDR)->M(MAR)
5. 向量地址->PC
6. 0->EINT //关中断
###### 断点存储在堆栈
* 前提假设断点保存至主存的0单元采用硬件向量寻找中断地址
* 步骤
1. (SP)-1->SP
2. (SP)->MAR
3. 1->W
4. (PC)->MDR
5. (MDR)->M(MAR)
6. 向量地址->PC
7. 0->EINT //关中断
#### 控制单元的输入
1. 操作码
* 来源:指令寄存器
* 功能将操作码送入控制单元CU进行译码
2. 标志
* 来源:上条指令的结果产生的信号(如进位信号)
* 功能:参与本条指令的执行
3. 时钟
* 来源:时钟脉冲
* 功能:控制操作时间,操作时序,执行方式
4. 控制信号
* 来源:控制总线
* 功能根据不同信号执行不同功能如中断请求DMA请求
#### 控制单元的输出
1. CPU的控制信号
* 功能控制寄存器间数据的传输和ALU的不同操作
2. 送至系统总线的控制信号
* 功能:命令主存读写、中断响应等
#### CPU控制方式
* 同步控制方式
* 特点
* 任何微操作或指令的执行都由事先确定且有统一基准时标的时序信号控制
* 以最长的微操作序列和最繁琐的微操作为标准,采用完全统一、具有相同时间间隔和相同数目的节拍作为机器周期(**定长方式**的同步控制)
* 每个机器周期节拍数可以不同(**不定长方式**的同步控制)
* 大部分指令采用同样节拍的机器周期内完成,少部分复杂指令在完成公共节拍后,转由局部控制器完成剩余节拍,完成后再转回重要控制器(**中央控制和局部控制相结合**的同步控制)
* 优点
* 电路简单
* 缺点
* 运行速度慢
* 异步控制方式
* 特点
* 各部件工作速度不一致
* 采用应答的方式进行联络
* 优点
* 运行速度快
* 缺点
* 电路复杂
* 用途
* 主机和I/O设备间的传输控制
* 联合控制方式
* 特点
* 同步和异步方式的折中
* 大部分微操作使用同步控制
* 少部分使用异步控制
### 微程序控制器
#### 名词概念
* 微操作
* 计算机中最基本的不可分解的操作
* 构成机器指令的最小单位
* 微命令
* 控制部件向执行部件发出的控制命令
* 控制序列的最小单位
* 与微操作一一对应
* 可分为**互斥微命令**和**相容微命令**
* 微指令
* 若干微命令的集合
* 存放微指令控制存储器称为微地址
* 基本构成
* 操作控制字段(操作码字段):产生各种操作控制信号
* 顺序控制字段(微地址码字段):控制产生下一条要执行的微指令地址
* 微周期
* 读取一条微指令并执行响应微操作所需的时间
* 主存储器
* 在CPU外部用RAM实现存放程序和数据
* 控制存储器
* 存放微程序在CPU内部用ROM实现
#### 组成
* 控制存储器
* 微指令寄存器
* 微地址形成部件
* 微地址寄存器
#### 步骤
1. 机器开始运行时将**取指微程序**入口地址送入CMAR并从CM中读出相应微指令送人CMDR使用**取指微程序**将机器指令存入指令寄存器中
2. 将机器指令的操作码字段使用微地址形成部件产生该指令所对应的微程序的入口地址并送人CMAR
3. 从CM中逐条取出对应的微指令并执行
4. 执行完一个机器指令的微程序后,继续第一步
#### 微指令编码方式
##### 直接编码
* 每个字段代表一个微命令
* n个微命令至少需要n位操作字段
* 优点
* 简单、直观、执行快
* 并行性好
* 缺点
* 指令字过长
##### 字段直接编码
* 将互斥性微命令分在同一字段内,相容性微命令分在不同段内
* 每个小段的信息位不能过多,防止译码线路过于复杂,译码时间长
* 每个小端留出一个状态表示不发出任何微命令
##### 字段间接编码
* 某个字段的微命令由另一个字段的微命令来解释
* 缩短的指令字长
* 削弱的并行能力
#### 微指令地址的形成
* 直接由微指令的下地址字段给出(断定方式)
* 后续微指令的地址根据机器指令操作码形成
* 增量计数法微指令地址连续和PC一样自增找到下一只了地址
* 分支转移:根据标志位决定下一地址
* 格式:操作控制字段+转移条件+转移地址
* 由硬件产生微指令地址
#### 微指令格式
| 项目 | 水平型微指令 | 垂直型微指令 |
| ---------------------- | -------------------------- | -------------------------- |
| 并行性 | 高 | 差 |
| 执行指令所需的微指令数 | 少 | 多 |
| 与机器指令的相似度 | 高 | 低 |
| 总结 | 微指令结构长,微程序结构短 | 微指令结构短,微程序结构长 |
### 硬布线和微程序控制器对比
#### 硬布线
* 优点
* 速度快
* 缺点
* 设计完成后难以修改
#### 微程序
* 优点
* 规整性
* 灵活性
* 可维护性
* 缺点
* 速度慢
#### 对比
| | 硬布线控制器 | 微程序控制器 |
| -------- | -------------------------------- | -------------------------------------------- |
| 工作原理 | 微操作控制信号由组合逻辑电路产生 | 微操作控制信号以微程序的形式存放于控制存储器 |
| 执行速度 | 快 | 慢 |
| 规整性 | 不规整 | 较规整 |
| 应用场景 | RISC | CISC |
| 易扩充性 | 差 | 好 |
## 指令流水线
### 分类
#### 按使用级别
* 部件功能级
* 将复杂的算术逻辑运算组成流水线操作
* 例:将浮点数加法分解成求阶差、对阶、尾数相加和结果规则化四个子过程
* 处理机流水线
* 将一条指令的解释过程制成流水线
* 例:将指令分成取指、译码、执行、访存、写回四个部分
* 处理机间流水线
* 每个处理机完成一个专门任务,结果交予下一个处理机
*Map Reduce
#### 按完成的功能
* 单功能流水线
* 只实现固定功能
* 多功能流水线
* 将各流水线部件进行不同组合完成不同功能
#### 按连接方式
* 静态流水线
* 在同一时间内各段执行同一功能的子过程
* 动态流水线
* 在同一时间内,某一功能的部分流水线段可同时作为其他功能的流水线段
#### 按功能段间是否有反馈
* 线性流水线
* 流水线部件不存在回路
* 非线性流水线
* 存在回路
* 适合递归运算
### 影响流水线性能的因素
* 数据冲突(数据冒险)
* 出现读写冲突
* 解决方案
* 阻塞冲突操作
* 硬件阻塞stall
* 软件阻塞使用nop指令
* 设置专用通路直接将前一指令的计算结果直接从ALU送入数据输入寄存器中
* 编译优化
* 控制冲突(控制冒险)
* 出现转移指令
* 解决方案
* 分支预测
* 静态分支预测:只预测一种结果
* 动态分支预测:根据指令执行的历史情况动态调整预测结果
* 同时预取两个控制流的目标指令
* 加快和提前形成条件码
* 提高转移方向的预测率
#### 流水线性能指标
* 吞吐率:单位时间完成的任务数量
$$
设任务数为n流水线段数为k每段花费t时间\\
吞吐率TP=\frac{n}{(k+n-1)t}\\
理想情况下最大吞吐率TP_{max}=\lim_{n \to \infty}TP=\frac{1}{t}
$$
* 加速比:不使用流水线的执行时间与使用流水线后的执行时间比
$$
T_0为不使用流水线的时间T_k为使用流水线的时间\\
加速比S=\frac{k*n*t}{(k+n-1)t}=\frac{k*n}{k+n-1}\\
最大加速比S_{max}=\lim_{n \to \infty}S=k
$$
* 流水线效率
$$
效率E=\frac{n个任务占用的时空图有效面积}{n个任务占用的时空图总面积}
$$
### 超标量流水线
#### 超标量流水线技术
* 增加多个部件,并行执行多条指令
#### 超流水线技术
* 划分更细小的流水线段
#### 超长指令字
* 将多条能并行的指令组合形成一个超长指令字
* 需要多个处理部件

View File

@@ -470,6 +470,22 @@
* 镜像备份
#### RAID 2
* 纠错的海明校验码
#### RAID 3
* 位交叉奇偶校验
#### RAID 4
* 块交叉奇偶校验
#### RAID 5
* 无独立校验的奇偶校验
### 光盘存储器
* 使用激光存储(光存储技术)

View File

@@ -0,0 +1,275 @@
# 总线
## 概述
* 总线是连接多个部件的信息传输线,是各部件共享的传输介质
* 特点
* 分时
* 共享
* 总线传输周期CPU通过总线对外设进行一次访问所需的时间
* 总线宽度:可同时传输的二进制代码位数
* 总线特性
* 机械特性:尺寸,形状
* 电气特性:传输方向,有效的电平范围
* 功能特性:每根传输线的具体功能(如传送地址、传送数据等)
* 时间特性:信号的时序关系(如某根线什么时间有效)
## 分类
### 按数据传输方式
* 串行传输总线
* 并行传输总线
### 按使用范围
* 计算机总线
* 测控总线
### 按连接部件
* 片内总线
* 位于芯片内部
* 如CPU内部寄存器之间的连接
* 系统总线
* 连接五大部件(运算器、控制器、存储器、输入设备和输出设备)
* 分类
* 数据总线
* 双向传输总线
* 地址总线
* 单向传输总线
* 控制总线
* 整体上看:双向传输
* 任意一条:单向传输
* 通信总线
* 计算机系统之间或计算机系统与其他系统间通信
* 分类
* 串行通信
* 适合远距离传输
* 并行通信
* 适合近距离传输
## 总线的组成
* 控制线
* 数据线
* 地址线(部分总线无地址线,使用数据线传输地址,称为数据线和地址线复用)
## 总线的性能指标
* 总线宽度:总线的根数
* 总线带宽:单位时间内传输数据的位数
* 总线复用:地址线和数据线共用以概率总线
* 信号线数:三种总线数目总和
## 总线的结构
### 单总线结构
* 所有设备共用一组总线
* 允许交换信息的设备
* I/O设备之间
* I/O设备与CPU
* I/O设备与主存
* CPU与主存
* I/O设备与主存统一编址
* 优点
* 结构简单
* 容易扩充
* 缺点
* 不允许多个设备同时传输信息
* 无法解决不同设备速率不匹配问题
* 适用对象
* 小型计算机
* 微型计算机
### 双总线结构
* 将速度较低的I/O设备分离出来
* 形成CPU与主存CPU与I/O设备两组总线
* 允许交换信息的设备
* I/O设备之间
* I/O设备与CPU或通道处理器
* CPU与主存
* 缺点
* 主存与I/O设备交换信息需要通过CPU或通道处理器效率低
### 三总线结构
* 在高速I/O设备与主存间增加了DMA总线
* 允许交换信息的设备
* I/O设备之间
* I/O设备与CPU
* 高速I/O设备与主存
* CPU与主存
## 总线仲裁
### 集中仲裁方式
* 所有总线请求统一集中交予一个仲裁算法进行裁决
* 组成
* 总线忙线
* 总线同意线
* 总线请求线
#### 链式查询方式
* 所有部件使用一条总线请求线
* 判定步骤
1. 部件需要请求总线时,发送总线请求至总线控制器
2. 若总线不忙,发送总线同意信号
3. 总线同意信号串行依次传送到各个部件,若某一部件有总线请求时,停止传送
4. 该部件建立总线忙信号
* 优先级
* 离总线控制器越近的部件优先级越高
* 优点
* 只需三根控制线,结构简单,易扩充
* 缺点
* 有硬件电路敏感第i个部件出错之后的部件都不能工作
* 优先级低的总线会出现**饥饿**现象
#### 计数器查询方式
* 在总线控制器中增加一个计数器
* 不需要总线同意线
* 增加**log~2~n**条**设备地址线**
* 判定步骤
1. 总线控制器收到请求后,计数器开始计数
2. 将计数器的数值通过设备地址线传输给每个设备
3. 若发送请求的设备地址与计数器数值不一致时,继续计数,回到第二步
4. 直到发送请求的设备的地址与计数器一致时,获取设备控制权,建立总线忙信号
* 优先级
* 方案1每次计数从0开始地址数值越小优先级越大
* 方案2每次计数从上一次的终点开始计数所有设备优先级相等
* 优点
* 各设备优先级顺序可以改变(通过修改设备地址)
* 对电路故障不如链式查询方式敏感
* 缺点
* 增加了控制线数
* 控制也比链式查询复杂
#### 独立请求方式
* 每个设备都有一个总线请求线和总线同意线
* 判定步骤
1. 每个设备独立发送请求
2. 总线控制器按照特点算法决定优先级
3. 选择好某一设备后,使用他的总线同意线发送同意信息
4. 该设备建立总线忙信号
* 优点
* 响应时间快
* 对优先级控制灵活(可通过程序改变)
* 缺点
* 控制线数量多
* 总线控制最复杂
#### 总线数目
| 总线类型 | 链式查询方式 | 计数器查询方式 | 独立请求方式 |
| ---------------------- | ------------ | ------------------------- | ------------ |
| 总线同意线 | 1 | 无 | n |
| 总线忙线 | 1 | 1 | 1 |
| 总线请求线 | 1 | 1 | n |
| 设备地址线 | 无 | $\lceil log_2n \rceil$ | 无 |
| 总数 | 3 | $\lceil log_2n \rceil +2$ | 2n+1 |
| 确定所有权需要的总线数 | 2 | $\lceil log_2n \rceil +1$ | 2n |
### 分布式仲裁方式
* 不需要中央仲裁器
* 每个模块有自己的仲裁号和仲裁器
* 每个仲裁器将自己的仲裁号发送到共享的仲裁总线上
* 通过对比仲裁总线上得到的仲裁号确定哪一个仲裁器占有总线
## 总线操作和定时
### 总线周期的组成
* 申请分配阶段(进行仲裁)
* 寻址阶段
* 传送数据阶段
* 结束阶段
### 分类
* 同步通信(同步定时方式)
* 异步通信(异步定时方式)
* 半同步通信
* 分离式通信
### 同步定时通信
* 时钟周期
1. 发送地址信息(直到第四周期结束为止,始终保持信号),若写指令,则在第一周期的中间时刻进行数据准备操作
2. 发送读写命令(维持到第三周期结束)
3. 传输数据
4. 撤销读写命令,撤销数据传输
* 优点
* 传输速度快
* 缺点
* 时钟必须以最慢模块设计
* 模块存取速度差别较大时,大大损失总线效率
* 可能不知道被访问的外部设备是否真正相应,可靠性低
* 适用范围
* 总线长度较短,各部件存取时间接近的设备
### 异步定时方式
* 增加两条应答线(**请求线**和**回答线**
* 采用**应答(握手)**的方式进行通信
* 步骤
1. 主模块发出请求
2. 等待从模块响应信号后才开始通信
* 分类
* 不互锁方式
* 主从模块无制约关系
* 主模块发出请求一段时间后,默认从模块收到信号,撤销请求
* 从模块发出应答一段时间后,默认主模块收到信号,撤销应答
* 半互锁方式
* 主从模块只有简单制约关系
* 主模块发出请求后,只有收到从模块的应答信号后才撤销请求
* 从模块发出应答一段时间后,默认主模块收到信号,撤销应答
* 全互锁方式(与三次握手几乎一样)
* 主从模块只有完全制约关系
* 主模块发出请求后,只有收到从模块的应答信号后撤销请求,并发出应答
* 从模块发出应答后,只有收到主模块的应答信号后撤销应答
## 总线标准
### 系统总线标准
* ISA工业标准体系结构总线
* 最早的微型计算机系统总线标准
* 用于IBM的AT机
* EISA扩展的ISA总线
* 配合32位CPU的总线扩展标准
* 完全兼容ISA
* VESAVL-BUS
* 32位的计算机局部总线
* 用于多媒体PC传输活动图像数据
* PCI最常用
* 计算机局部总线
* 连接外围设备与处理机/存储器系统
* 支持即插即用
* 支持对数据和地址的奇偶校验
* PCI-ExpressPCI-E
* 最新的总线和接口标准
* 将取代PCI和AGP
### 设备总线标准
* IDE集成设备电路
* 用于连接处理器和磁盘驱动器
* AGP加速图形接口
* 用于连接主存和图形存储器
* USB通用串行总线
* 用于快速连接外部设备
* 串行传输,只能同时传输一位数据
* 通信总线
* SATA串行高级技术附件
* 串行硬件驱动器接口
## 其他零散知识
* 计算机局部总线局部总线是在ISA总线和CPU总线之间增加的一级总线或管理层。这样可将一些高速外设如图形卡硬盘控制器等从ISA总线上卸下而通过局部总线直接挂接到CPU总线上使之与高速能CPU总线相匹配。

View File

@@ -0,0 +1,207 @@
# 指令系统
## 指令格式
### 一般形式
* 操作码字段+地址码字段
### 零地址指令
#### 格式
* 操作码字段
#### 含义
* 不需要操作数,如空指令、停机指令、关中断指令
* 在堆栈计算机中,参与运算的若干个操作数直接从栈顶弹出,结果也存放在堆栈中
### 一地址指令
#### 格式
* 操作码字段+地址码1
#### 含义
* 只有目的操作数的单操作数指令,从地址中取数据计算后存回该地址,如递增指令、取反指令等
* OP(A~1~)->A~1~
* 隐含操作数的双操作指令指令可约定另一个操作数由ACC给出并将结果存入ACC
* (ACC)OP(A~1~)->(ACC)
### 二地址指令
#### 格式
* 操作码字段+地址码1+地址码2
#### 含义
* 给出两个操作数进行计算,称为源操作数和目的操作数,其中目的操作数还存放本次运算结果
* (A~1~)OP(A~2~)->(A~2~)
### 三地址指令
#### 格式
* 操作码字段+地址码1+地址码2+地址码3
#### 含义
* 给出两个操作数进行计算,结果存放在第三个操作数上
* (A~1~)OP(A~2~)->(A~3~)
### 四地址指令
#### 格式
* 操作码字段+地址码1+地址码2+地址码3+地址码4
#### 含义
* 给出两个操作数进行计算结果存放在第三个操作数上下一条指令的地址为地址码4
* (A~1~)OP(A~2~)->(A~3~)
### 分类
* 定长操作码指令
* 不定长操作码指令
## 寻址方式
### 指令寻址
* 顺序寻址
* 程序计数器PC+1得到下一条指令地址
* 跳跃寻址
* 转移指令修改PC的值从而修改下一条指令地址
### 数据寻址
#### 格式
* 操作码+寻址特征+地址
#### 隐含寻址
* 不显式给出操作数地址,如规定累加器作为第二操作数地址
#### 立即数寻址
* 直接给定操作数
#### 直接寻址
* 直接给出操作数在主存的地址
* EA=A
#### 间接寻址
* 给出的地址为操作数地址的地址
* EA=(A)
#### 寄存器寻址
* 给出操作数所在的寄存器编号
* EA=R
#### 寄存器间接寻址
- 操作数地址在给定的寄存器中
- EA=(R)
#### 相对寻址
* 操作数地址EA=(PC)+A
#### 基址寻址
* 设置基址寄存器BR
* 由操作系统维护,程序运行时不可改变
* 使用通用寄存器作为BR用户有权知道作为基址寄存器的寄存器是哪一个
* EA=(BR)+A
* 优点
* 扩大寻址范围
* 便于解决多道程序问题
#### 变址寻址
* 设置变址寄存器IX
* 由用户维护
* 在程序运行时可修改
* EA=(IX)+A
* 优点
* 扩大寻址范围
* 适合处理数组问题和循环程序
#### 堆栈寻址
* 使用栈顶作为隐含操作数地址
#### 结合寻址方式
* 先间址再变址EA=(A)+(IX)
* 先变址再间址EA=(A+(IX))
* etc
## 运算标记位
* ZF零标志运算结果为0时置1
* OF溢出标志运算结果溢出时置1
* CF进位/借位标志,把操作数都看作无符号数
* 相减运算A-B时若A<B时则发生借位CF置1
* 相加运算时若进位CF置1
* SF符号标志把操作数看作有符号数
* 结果为正时置1
* 结果为负时置0
## 指令系统发展方向
### CISC复杂指令系统计算机
* 指令数目多
* 指令长度不固定
* 指令格式多
* 寻址方式多
* 可以访存的指令不受限制
* 各指令使用频率相差大
* 各指令执行时间相差大大部分要多个时钟周期
* 大多数采用微程序控制部分指令复杂难以适应硬连线控制
* 难以优化
### RISC精简指令系统计算机
* 选取使用频率最高的指令复杂指令功能由简单指令实现
* 指令长度固定
* 指令格式少
* 寻址方式少
* 只有Load和Store指令可以访存其他指令操作都在寄存器间完成
* 通用寄存器数目多
* 采用指令流水线技术多数指令在一个时钟周期内完成
* 以硬布线为主不用或少用微程序控制
* 注重编译优化
### 对比
#### RISC优点
* 更能利用VLSI芯片面积
* 运算速度块
* 便于设计成本低可靠性高
* 便于优化
| | CISC | RISC |
| ------------ | ---------------------- | ---------------------- |
| 指令系统 | 庞大复杂 | 简单精简 |
| 指令数目 | 一般大于200 | 一般少于100 |
| 指令字长 | 不固定 | 固定 |
| 可访存指令 | 不加限制 | 只有Load/Store指令 |
| 指令执行时间 | 差别大 | 绝大部分在一周期内完成 |
| 指令使用频率 | 差别大 | 都比较常用 |
| 通用寄存器数 | 较少 | |
| 目标代码 | 难以优化 | 容易优化 |
| 控制方式 | 绝大多数使用微程序控制 | 绝大多数为组合逻辑控制 |
| 指令流水线 | 可以通过一定方式实现 | 必须实现 |

View File

@@ -0,0 +1,492 @@
# 输入输出系统
## 发展历程
### 早期阶段
* 通过CPU才能完成主存与I/O系统的信息交换
![image-20200829201743099](img/输入输出系统/早期阶段.png)
* 缺点
* 交换信息时CPU需要停止运算效率低
* I/O设备逻辑电路与CPU控制器构成不可分的整体难以增加和删除设备
* 改进
* 交换信息时最好不通过CPU
* 设备逻辑电路应与CPU无关这里可采用总线完成
### 接口模块和DMA阶段中断方式和DMA方式
* I/O设备通过接口与主机相连并使用总线连接CPU与接口
* 每个接口模块包括**数据通路**和**控制通路**
* 数据通路起到缓冲的作用
* 控制通路发出各种控制命令以及中断处理的需求
* 使用总线结构可以随时增减设备
* 优点
* 小部分解决第一个问题
* 解决了第二个问题
* 缺点
* 中断处理需要花费CPU时间只能小部分解决第一个问题
![img](img/输入输出系统/接口模块与dma.png)
* 使用DMA技术进一步提高并行性通过DMA接口可直接进行数据传输只需要在传输结束后发送中断请求
* 缺点
* 增加了硬件成本,使控制变得十分复杂;
* 对众多的DMA进行管理会占用CPU的工作时间直接影响CPU的整体工作效率。
![img](img/输入输出系统/DMA.PNG)
### 具有通道结构的阶段
* 使用通道处理机来管理主存和I/O设备间的通信
* 适用于大、中型计算机系统
* 通道负责管理IO设备以及实现主存与IO设备之间交换信息能够独立的执行通道指令所编写的输入输出程序
* 通道受CPU的IO指令启动、停止或改变其工作状态
* CPU不直接参与管理IO设备故CPU的资源利用率更高
![img](img/输入输出系统/通道.png)
### 具有I/O处理器的阶段
- IO处理机独立于主机工作既可完成IO通道对IO的控制又可以完成码制变换、格式处理、数据块检错、纠错等操作
- 与CPU工作的并行性更高
![img](img/输入输出系统/IO处理机.png)
## I/O系统基本概念
### I/O软件
#### 类别
* 驱动程序
* 用户程序
* 管理程序
* 升级补丁
* etc
#### 实现
* I/O指令
* 格式操作码判断是否为I/O操作+命令码判断执行哪种I/O操作+设备码
* 通道指令
* 包含内容
* 数据首地址
* 数据字节数或数据尾地址
* 操作类型
* 操作设备编号
### I/O硬件
#### 类别
* 外部设备
* 设备控制器
* 接口
* I/O总线
## 外部设备
### 输入设备
#### 键盘
##### 输入步骤
1. 按下一个键
2. 识别扫描码
3. 将扫描码翻译成ASCII码
#### 鼠标
#### 工作原理
* 在平面上移动时,传感器将运动方向和距离检测出来,转换成光标的移动
### 输出设备
#### 显示器
##### 参数
* 屏幕大小(使用对角线长度表示)
* 分辨率(表示的像素点个数)
* 灰度级像素点亮暗程度或颜色种类典型有8位16位
* 刷新
* 刷新频率
* 显示存储器/显存/VRAM存储图像数据
* VRAM容量=分辨率*灰度位数
* VRAM带宽=分辨率*灰度位数\*帧频
##### 分类
* 按显示内容划分
* 字符显示器
* 以m*n的点阵作为显示字符的基本单位
* 扫描过程中根据点阵信息控制扫描电子束的开与关
* 图形显示器
* 将图像的坐标点和绘图指令组成显示文件存放在缓冲存储器
* 将显示文件传送给矢量(线段)产生器产生模拟电压控制电子束的移动
* 需要不断刷新
* 优点
* 分辨率高,曲线平滑
* 缺点
* 显示复杂图形会有闪烁感
* 按显示器件划分
* 阴极射线管CRT显示器
* 扫描方式
* 光栅扫描:每次扫描整个屏幕
* 逐行扫描
* 隔行扫描(先扫描奇数行,再扫描偶数行)
* 随机扫描
* 只扫描要作图的地方
* 画图速度快,成像清晰
* 驱动复杂,价格贵
* 优点
* 可视角度大
* 无坏点
* 色彩还原度高,色度均匀
* 多分辨率模式
* 响应时间短
* 液晶显示器LCD
* 原理
* 利用液晶电光效应,由图像信号电压直接控制薄膜晶体管,再间接控制液晶分子的光学特性来实现图像的显示
* 优点
* 体积小
* 重量轻
* 省电
* 无辐射
* 绿色环保
* 画面柔和
* 不伤眼
* LED发光二级管显示器
* 原理
* 控制半导体发光二级管来显示文字,图像
* 优点
* 亮度高
* 功耗小
* 可视角度大
* 刷新速率快
#### 打印机
##### 分类
* 按工作原理
* 击打式打印机
* 原理:使用机械动作让印子机构、色带与纸撞击打印字符
* 优点
* 成本低
* 印刷质量好
* 缺点
* 噪声大
* 速度慢
* 种类
* 活字打印机
* 点阵针式打印机
* 非击打式打印机
* 原理:使用电、磁、光、喷墨等物理化学方法打印字符
* 优点
* 印刷质量更好
* 速度快
* 噪声小
* 缺点
* 价格贵
* 按工作方式
* 点阵打印机
* 针式打印机
* 原理:使用针头撞击纸张进行打印
* 优点
* 原理简单
* 耗材便宜
* 缺点
* 打印分辨率低
* 打印速度慢
* 使用场景
* 打印票据
* 喷墨式打印机
* 原理:喷雾墨点经过电极偏转在纸上形成字符,彩色喷墨打印机使用三原色墨滴按比例形成各种颜色
* 优点
* 噪声小
* 速度快
* 质量好
* 缺点
* 防水性差
* 高质量打印需要专门打印纸
* 激光打印机
* 原理:使用激光束扫描,在感光鼓(核心部件)形成潜像,最好经过显影、转印和定影形成字符和图像
* 优点
* 打印质量高
* 速度快
* 噪声小
* 处理能力强
* 缺点
* 耗材多
* 价格贵
* 不能复写打印多份
* 对纸张要求高
* 按数据传输方式
* 串行打印机(逐字打印)
* 行式打印机(逐行打印)
### 外存储器
* 见**存储器**章节
## I/O接口
### 功能
* 实现主机和外设的通信连络控制
* 进行地址译码和设备选择
* 实现数据缓冲
* 信号格式转换
* 传送控制命令和状态信息
* 传输数据
### 基本结构
* 数据线(双向)
* 设备选择线单向CPU->接口)
* 命令线单向CPU->接口)
* 状态线(单向,接口->CPU
* 内部接口:与系统总线相连,并行传输
* 外部接口:与外设相连,可能串行传输,故接口需具有串/并转换功能
### 接口类型
* 按数据传送方式划分
* 串行接口
* 并行接口
* 按主机访问方式划分
* 程序查询接口
* 中断接口
* DMA接口
* 按功能选择的灵活性划分
* 可编程接口
* 不可编程接口
### I/O端口
#### 定义
* 接口电路中可直接被CPU访问的寄存器
#### 分类
* 数据接口(可读写)
* 状态接口(只读)
* 控制接口(只写)
#### 编址
* 统一编址(存储器映射方式)
* 将I/O端口当作存储器单元一同编址
* 优点
* 不需要专门的输入输指令
* 使端口用有较大的编址空间
* 缺点
* 占有存储器容量
* 执行速度慢
* 独立编址I/O映射方式
* I/O端口地址空间与主存地址相互独立
* 优点
* 输入输出需要专门指令,使程序结构清晰
* 不影响主存容量
* 缺点
* 输入/输出指令较少
* 增加了控制的复杂性
## I/O方式
### 程序查询方式程序控制I/O方式
#### 步骤
1. CPU初始化程序设置传送参数
2. 向I/O端口发出命令字启动I/O设备
3. CPU从外设接口读取状态信息
4. CPU不断查询外设状态直至外设准备就绪
5. 传送数据
6. 修改地址和计数器参数
7. 判断传送是否结束若未结束继续第3步
#### 特点
* 数据成块传送,故需要计数器记录传送字数
* 需给出传送数据的首地址
#### 就绪状态
* 输入:输入缓冲满
* 输出:输出缓冲空
### 程序中断方式
#### 中断概念
##### 中断功能
* 实现CPU与I/O设备并行工作
* 处理硬件和软件错误
* 实现人机交互,用户干预机器需要中断
* 实现多道程序,分时操作,多道程序的切换需要中断
* 实时处理系统需要中断系统实现快速响应
* 实现目态与管态的切换,称为软中断
* 多处理器系统的信息交流和任务切换
##### 分类
* 按中断源划分
* 内中断:处理器和内存内部产生的中断(如运算错误,特权指令等)
* 外中断处理器和内存以外设备产生的中断如时钟中断I/O中断等
* 按软硬件划分
* 硬件中断:由硬件产生的中断
* 软件中断:由某条特定指令产生的中断
* 按屏蔽与否划分
* 非屏蔽中断:不受中断标志位影响,关中断的条件下也会相应
* 可屏蔽中断:受中断标志位影响
* 非屏蔽中断和可屏蔽中断均属于外中断和硬件中断
#### 流程
1. 中断请求
2. 中断判优:判断中断优先级
* 一般的优先级划分
* 硬件中断>软件中断
* 非屏蔽中断>可屏蔽中断
* DMA请求>I/O设备传送的中断请求
* 高速设备的中断>低速设备的中断
* 输入设备的中断>输出设备的中断
* 实时设备的中断>普通设备的中断
3. 中断响应
* 响应条件
* 中断源有中断请求
* CPU允许中断并开中断
* 一条指令执行完毕并且没有更紧急的任务
4. 中断隐指令
1. 关中断
2. 保存断点
3. 引出中断服务程序
5. 中断向量表
* 中断服务程序入口地址表
* CPU响应中断后中断硬件会自动将中断向量地址中断向量的入口地址送入CPU由CPU完成程序中断
6. 中断处理过程
1. 中断隐指令(硬件完成)
1. 关中断
2. 保存断点
3. 引出中断服务程序
2. 中断服务程序
1. 保存现场和屏蔽字
2. 开中断(实现中断嵌套)
3. 执行中断服务程序
4. 关中断
5. 恢复现场和屏蔽字
6. 开中断
7. 中断返回
#### 多重中断
##### 条件
* 中断服务程序中开中断
* 优先级高的中断源有权中断优先级低的中断源
#### 中断处理硬件
* 中断请求触发器
* 中断屏蔽字触发器
* 排队器
* 中断向量地址形成部件
### DMA直接存储器存取方式
#### 适用外设
* 磁带机
* 磁盘机
#### 特点
* 主存既可以被CPU访问也可以被外设访问
* 数据块传送时,主存地址的确定,传送数据的计数由硬件部件直接实现
* 主存需要开辟专用缓冲区
* CPU与外设并行工作
* DMA开始传送前需要通过程序预处理结束后需要通过中断进行后处理
#### DMA控制器功能
* 接收外设发出的DMA请求并向CPU发出总线请求
* CPU响应总线请求发出总线响应信号接管总线控制权进入DMA操作周期
* 确定传送数据的主存单元地址和传送方向,发出读写控制信号,执行数据传送操作
* 向CPU报告DMA操作的结束
#### DMA控制器组成
* 主存地址计数器
* 传送长度计数器
* 数据缓冲寄存器
* DMA请求触发器
* “控制/状态”逻辑
* 中断机构
#### DMA传送方式
* 停止CPU访问主存
* DMA访问主存时CPU放弃地址线数据线及有关控制线的使用权此时CPU处在不工作状态
* DMA与CPU交替访存
* 当CPU周期大于存取周期时将CPU周期划分成两部分一部分由DMA执行访存操作另一部分由CPU进行访存操作
* 周期挪用(周期窃取)
* CPU不访存时DMA直接进行访存
* CPU正在访存时DMA等待CPU访存结束再访存
* CPU和DMA同时发出访存指令时DMA让CPU暂时放弃总线几个存取周期之后再交由CPU访存
#### DMA传送过程
1. 数据预处理
* 由CPU完成
* 步骤
1. CPU执行几条I/O指令测试设备
2. CPU设置DMA控制器有关寄存器初值、传送方向、启动设备等
3. CPU继续执行
4. 设备准备就绪后向DMA控制器发出DMA请求之后DMA控制器向CPU发出总线请求统称DMA请求
2. 数据传送
* 传输基本单位可以是字节、字或数据块
* 硬盘使用数据块传输
* DMA控制器使用循环实现数据块传输
* 该阶段完全由DMA硬件控制
3. 后处理
* 步骤
1. DMA控制器向CPU发出中断请求
2. CPU执行中断程序进行结束处理
* 校验数据是否正确
* 测试传输过程是否出错
* 是否继续使用DMA传输数据
### DMA与程序中断的区别
1. 中断方式时程序的切换需要保护和恢复现场DMA除了预处理和后处理其他情况不占用CPU资源
2. 对中断请求的响应只能发生在每个指令执行完毕后对DMA请求的响应可以发生在任意机器周期结束后只要CPU不占用总线即可
3. 中断方式传输过程需要CPU干预DMA不需要因此传输速度快
4. DMA请求优先级高于中断请求
5. 中断方式具有对异常事件的处理能力DMA仅用于传输数据块的I/O操作
6. 中断方式使用程序传输DMA方式使用硬件传输