一、CPU的结构
1. CPU的功能
CPU的功能:指令控制、操作控制、时间控制、处理中断、数据加工
- 控制器的功能:取指令;分析指令;执行指令,发出各种操作命令;控制程序输入及结果输出;总线管理;处理异常情况和特殊情况
- 运算器的功能:实现算术逻辑和运算逻辑
2. CPU结构框图
3. CPU的寄存器
用户可见寄存器
- 通用寄存器:存放操作数,可作某种存址方式所需的专用寄存器
- 数据寄存器:存放操作数(满足各种数据类型),两个寄存器拼接存放双倍字长数据
- 地址寄存器:存放地址,其位数应满足最大的地址范围,用于特殊的寻址方式,eg:段基址,栈指针
- 条件码寄存器:存放条件码,可作程序分支的依据,如正、负、零、溢出、进位
控制和状态寄存器
- 控制寄存器
· PC → MAR → M → MDR → IR
· 控制CPU操作,其中MAR、MDR、IR用户不可见,PC用户可见 - 状态寄存器:指令执行结果的情况,计算机软硬件的状态
· 状态寄存器:存放条件码
· PSW寄存器:存放程序状态字
4. 控制单元CU和中断系统
- CPU:产生全部指令的微操作命令序列
· 组合逻辑设计:硬连线逻辑
· 微程序设计:存储逻辑,复杂功能设计 - 中断系统
5. ALU
二、指令周期
1. 指令周期的基本概念
- 指令周期
· 定义:取出并执行一条指令所需的全部时间
· 完成一条执行:取值周期(取值、分析)、执行周期(执行)
· 不同CPU完成指令的组成不全相同
- 每条指令的指令周期不同
· 指令周期:取指周期,eg:NOP
· 指令周期:取指周期+执行周期,且周期相同,eg:ADD mem
· 指令周期:取指周期+执行周期(周期更长),eg:NUL mem - 具有间接寻址的指令周期:取指周期+间址周期+执行周期
- 带有中断周期的指令周期:取指周期+间址周期+执行周期+中断周期
- 指令周期流程
- CPU工作周期的标志
2. 指令周期的数据流
- 取址周期数据流
- 间址周期数据流
- 执行周期数据流:不同指令的执行周期数据流不同
- 中断周期数据流:保存断点右 → 形成中断服务程序的入口地址 → 硬件关中断
三、指令流水
1. 如何提高机器速度
- 提高访存速度:使用高速芯片、cache,多体并行
- 提高I/O和主机之间的传送速度:中断(解决程序控制中利用率低),DMA,通道,I/O处理机,多总线
- 提高运算器速度:高速芯片,改进算法,快速进位链
- 提高整机处理能力
· 使用高速器件
· 改进系统结构,开发系统的并行性
2. 系统的并行性
- 并行的概念
· 并发:两个或两个以上事件在同一时间段发生
· 同时:两个或两个以上事件在同一时刻发生(时间上相互重叠) - 并行的等级
· 程序级(程序、进程)—粗粒级—软件实现
· 指令级(指令之间、指令内部) —细粒级—硬件实现
3. 指令流水原理
- 指令的串行执行(控制器利用率低)
- 指令的二级流水
- 影响指令流水效率加倍的因素
· 执行时间 > 取值时间:取指令部件 → 指令部件缓冲区 → 执行指令部件
· 条件转移指令对指令流水的影响:必须等上条指令执行结束,才能确定下条指令的地址,造成时间损失。(解决方法:分支预测) - 指令的六级流水
· FI:取指令 DI:指令译码 CO:形成操作数的地址 FO:取操作数 EI:执行 WO:结果的写回
· 示意图(串行执行):
4. 影响指令流水线性能的因素
- 结构相关:
· 不同指令争用同一功能部件产生资源冲突
· 解决方法:停顿(加入气泡),指令存储器和数据存储器分开(哈佛结构),指令预取技术(适用于访存周期短的,解决对内存资源访问的冲突) - 数据相关:不同指令因重叠操作,可能改变操作数的读/写访问顺序
· 分类:写后读相关(RAW) 读后写相关(WAR) 写后写相关(WAW)
· 解决方法:后推法,采用旁路技术(相关专用通路,前向通道) - 控制相关:由转移指令引起,造成转移损失
5. 流水线性能
- 吞吐率:单位时间内流水线所完成指令或输出结果的数量
· 最大吞吐率:流水线满负荷运转,没有发生资源冲突、没有发生数据相关、没有转移指令等,这条流水线能达到的最大的吞吐率。
· 实际吞吐率:一段时间内所完成的指令或任务数除以完成其所用的时间
- 加速比:采用流水技术和不采用流水线技术的速度比
- 效率:流水线中硬件的使用率
· 建立时间(第一条指令进入到最后一条流出)
· 排空时间(最后一条指令进入到最后一条流水排空)
6. 流水线的多发技术
- 超标量技术
· 每个时钟周期内可并发多条独立指令,要配置多个功能部件
· 不能调整指令的执行顺序,通过编译优化技术,把可并行执行的指令搭配起来 - 超流水线技术
· 在一个时钟周期内再分n段,在一个时钟周期内一个功能部件使用n次,流水线速度是原来速度的n倍
· 流水段间加入锁存器,把每一个流水段的执行结果在锁存器中锁存,作为下一个流水段执行的操作信号、控制信号或操作的数据。
·(关键技术) 不同的指令处在同一个流水段中,相互之间的信号不能叠加。
· 不能调整指令的执行顺序,靠编译程序解决优化问题 - 超长指令字技术
· 由编译程序挖掘出指令间潜在的并行性,将多条能并行操作的指令组合成一条具有多个操作码字段的超长指令字。
· 减少取指令的时间
· 采用多个处理部件
7. 流水线结构
- 指令流水线结构
- 运算流水线
· 运算过程复杂时,可采用流水线方式实现,提高运算器速度。
· 浮点加减运算:对阶、尾数求和、规格化
· 分段原则:每段操作时间尽量一致
四、中断系统
1. 概述
引起中断的各种因素
- 人为设置的中断:转管指令
- 程序性故障:溢出、操作码不能识别、除法非法
- 硬件故障:存储器故障,硬盘坏道,电源掉电
- I/O设备
- 外部设备:键盘中断现行程序
中断系统需解决的问题(硬件+软件)
- 各中断源如何向CPU提出请求?
- 各中断源同时提出请求怎么办?
- CPU什么条件、什么时间、以什么方式响应中断?
- 如何保护现场?
- 如何寻找入口地址?
- 如何恢复现场,如何返回?
- 处理中断的过程中又出现新的中断怎么办?
2. 中断请求标记和中断判优逻辑
中断请求标记
- 一个请求源对应一个INTR中断请求标记触发器
- 多个INTR组成中断请求标记寄存器
- INTR分散在各个中断源的接口电路中
- INTR集中在CPU的中断系统内
中断判优逻辑
- 硬件实现(排队器)
· 分散在各个中断源的接口电路中,eg.链式排队器
· 集中在CPU内
- 软件实现(程序查询)
3. 中断服务程序入口地址的寻找
- 硬件向量法
· 向量地址形成部件:指出目前在所有申请中断的中断源中哪一个优先级最高。即通过向量地址形成地址找到中断服务程序的入口地址。
· 中断服务程序的入口地址:中断服务程序的入口地址存放跳转指令;在内存单元中指定位置取回
- 速度快,灵活性低 - 软件查询法
· 灵活性高:通过改变程序查询的顺序,改变中断服务程序的入口
4. 中断响应
响应中断的条件
允许中断触发器ENIT = 1
响应中断的时间
指令执行周期结束时刻由CPU发查询信号
中断隐指令
- 保护程序断点
· 断点存于特定地址(0号地址)内
· 断点进栈 - 寻找服务程序入口地址
· 向量地址 → PC(硬件向量法)
· 中断识别程序入口地址M → PC(软件查询法) - 硬件关中断
· 单重中断:执行中断服务程序时不允许再发生中断
· 多重中断:保护程序软硬件状态的过程中,不允许发生中断
5. 保护现场和恢复现场
保护现场
- 断点:中断隐指令完成
- 寄存器内容:中断服务程序完成
恢复现场:中断服务程序完成
- 保护现场(PUSH):保护寄存器内容
- 其他服务程序:视不同请求源而定
- 恢复现场(POP):弹出寄存器内容
- 中断返回(IRET)
6. 多重中断
多重中断的概念
定义:CPU在执行中断服务程序过程中,如果有新的中断源提出中断请求,且优先级高于当前执行程序,则CPU需要响应该请求。
实现多重中断的条件
- 提前设置开中断指令
- 优先级别高的中断源有权中断优先级低的中断源
屏蔽技术
- 屏蔽触发器的作用:使某一个中断源无法向CPU提出中断请求,也不能参加中断优先级排队器。
- 屏蔽字:0:不屏蔽,1:屏蔽
- 屏蔽技术可改编处理优先等级
· 响应优先级:不可改变,硬件电路实现
· 处理优先级: 可改变,重新设置屏蔽字
- 屏蔽技术的其他作用:可以人为地屏蔽某个中断源的请求
- 新屏蔽字的设置
保护现场 → 置屏蔽字 → 开中断 → 中断服务 → 关中断 → 恢复现场 → 恢复屏蔽字 → 开中断 → 中断返回
多重中断的断点保护
- 断点进栈:中断隐指令完成
- 断电存入“0”地址:中断隐指令完成
- 程序断电存入“0”地址的断点保护