【计组】总线与IO
总线
同步定时方式
采用公共时钟信号协调发送方和接收方的传送
异步定时方式
采用握手信号来实现定时控制
不互锁
对于主设备:请求,隔一段时间自动撤销请求
对于从设备:回答,隔一段时间自动撤销回答
半互锁
对于主设备:请求,收到回答后撤销请求
对于从设备:回答,隔一段时间自动撤销回答
全互锁
对于主设备:请求,收到回答后撤销请求
对于从设备:回答,获知主设备请求已撤销后撤销回答
分离事务通信方式
将总线事务分解成请求+应答,不传送数据时释放总线,使总线可以接受其他设备的请求
中断和异常
异常
故障
指令执行时被检测到的异常事件
断点为当前指令
终止
指令执行时发生的硬件故障
一般直接终止程序的执行,不会回头
自陷
预先安排的一种异常,执行完自陷指令后CPU会陷入内核态,根据陷阱类型完成不同的处理程序(因为是预先安排的,所以通常是为了达成某些目的)
断点为下一条指令/转移目标地址
内中断皆为不可屏蔽中断
中断
NMI
任何时候只要发生NMI就必须要立刻进行处理
DMA请求>NMI DMA请求不是DMA中断
做选择题时说的“中断”大概率不考虑NMI!
INTR
CPU可在中断控制器中设置屏蔽字来屏蔽INTR
识别异常/中断源的方式
软件识别方式
CPU设置一个用于记录异常原因的异常状态寄存器
OS使用一个统一的异常查询程序,按照一定的优先级顺序查询异常状态寄存器,并处理异常
硬件识别方式(向量中断)
中断向量:异常/中断处理程序的入口地址,硬件生成
中断向量表:存放中断向量
中断类型号:用来标识异常/中断,和中断向量一一对应
响应中断的条件
CPU处于开中断
至少有一个未被屏蔽的中断请求
当前指令刚执行完
中断处理的过程
响应(中断隐指令)
1.关中断
2.保存断点(PC和PSW)
3.识别中断源,转到相应的处理程序
处理(中断服务程序)
单重中断
1.保存现场
2.执行中断服务程序
3.恢复现场
4.开中断(这里开中断是因为现场已经恢复完了)
5.中断返回
多重中断
1.保存现场和屏蔽字
0表示允许中断,1表示屏蔽中断
2.开中断(从这里开始才能接收到新的中断)
3.执行中断服务程序
4.关中断(这里关中断是为了恢复现场时的安全)
5.恢复现场和屏蔽字
6.开中断(这里开中断是因为现场已经恢复完了)
7.中断返回
优先级
响应优先级:硬件决定
处理优先级:屏蔽字决定
多个中断同时到达,由响应优先级决定处理顺序
多个中断先后到达,由到达次序决定处理顺序
I/O接口与I/O端口
功能
进行地址译码和设备选择
实现主机和外设的通信联络控制
实现数据缓冲
信号格式的转换(电平转换、并/串转换、模/数转换)
IO接口的通用结构
数据线
读写数据
状态字(命令字)
控制字
中断类型号
地址线
I/O端口地址
如果某个I/O接口能够作为数据通信的主控设备(如DMA控制器),那么它就可以发起总线事务并控制总线进行数据传送,地址线方向为输出
控制线
各种信号
I/O端口编址
统一编址
独立编址
需要设置专门的I/O指令
程序查询方式
特点
信息交换完全由 CPU 执行程序实现
CPU 与外设串行工作
工作流程
程序中断方式
特点
通过中断请求CPU转去处理,在处理的过程中完成数据传输,处理完毕后回到现行程序
CPU 与外设并行工作
中断IO方式请求的是处理器的时间
工作流程
DMA
特点
传送数据不经过CPU
采用“请求-响应”方式
主要用于磁盘等高速设备数据传送
DMA方式请求的是总线控制权
CPU与外设并行工作
工作流程
1.DMA控制器的初始化
CPU执行一段初始化程序:
1.准备内存区
2.设置传送参数
3.向DMA控制器发送“启动DMA传送”命令,然后调度CPU执行其他进程,由DMA控制器掌权
2.DMA数据传送
DMA控制器给出内存地址
读写线发命令
每完成一个数据传送,字计数值减1并修改主存地址,字计数器为0时完成所有IO操作
3.DMA的后处理
字计数器为0时,发出DMA结束的中断请求信号给CPU,转入中断服务程序,做一些数据校验等后处理工作
传送方式
停止CPU访存
DMA传输时,由DMA控制器发一个停止信号给CPU,使CPU脱离总线,停止访问主存,直到DMA传送一块数据结束
周期挪用
DMA传输时,CPU让出一个总线事务周期,由DMA控制器挪用一个主存周期来访问主存,传送完一个数据后立即释放总线,是一种单字传输方式
每个块只需要初始化一次,在传输过程中每传输一个字DMA控制器就要重新申请总线(这个才是周期挪用的单字传输!),最后进行后处理
DMA与CPU交替访存
DMA请求与DMA中断
计算(CPU用于I/O或DMA的时间占整个CPU时间的百分比)
方法
用于I/O的时钟周期数/CPU在1s内能够提供的时钟周期数
主频xHz=1s内CPU可以提供x个时钟周期