第四章输入输出系统
一、概述
1.1 I/O系统发展
1.早期阶段
-
I/O与主机之间连接采用:分散连接。
-
CPU和I/O设备串行工作:程序查询方式。
2.接口模块和DMA阶段
- I/O与主机之间连接采用:总线连接。
- CPU和I/O设备并行工作:中断方式、DMA方式
3.后续为具有通道结构的阶段、具有I/O处理机阶段。
1.2输入输出系统的组成
- I/O软件:包括驱动程序、用户程序等。通常采用指令和通道指令实现CPU与I/O设备的信息交换。
- I/O硬件:包括外部设备、设备控制器和接口等。通过设备控制器来控制I/O设备的具体动作,且通过I/O接口与主机相连。
二、I/O设备与主机信息传送的控制方式
2.1程序查询方式
- 信息交换的控制完全由CPU执行程序实现。
- 程序查询方式由CPU向I/O发出读指令后,CPU不断查询I/O设备状态,直到外部设备就绪。
- 在I/O准备的时候,CPU会出现“ 踏步等待 ”。CPU和I/O串行工作。
2.2程序中断方式
这种方式将I/O工作分为两个部分:①自身准备②与主机交换信息。
- CPU访问I/O设备过程:
①CPU在启动I/O设备后,不检查I/O设备状态,若I/O设备处于准备时,继续执行自身程序
②当I/O设备准备就绪时,向CPU发出中断请求。
③CPU接收到中断请求,暂停现行程序,I/O与主机交换信息。
- CPU不会出现“ 踏步等待 ”,CPU和I/O部分的并行工作。
- 一般来说,中断响应优先级如下:
①不可屏蔽中断>内部异常>可屏蔽中断
②内部异常中,硬件鼓掌>软件中断
③DMA中断请求>I/O设备传送的中断请求
④I/O传送类中,高速设备>低速设备;输入设备>输出设备;实时设备>普通设备。
- 中断过程:
①关中断:在CPU响应中断后,首先保护程序的断点和现场信息,在保护过程中CPU不能响应更高级中断的请求。
②保存断点:为了中断服务完成后能够正确返回到原来的程序,必须保存原程序的断点到特定的栈或寄存器中。
③中断事件处理。
④恢复现场和屏蔽字
⑤中断返回。
2.3直接存储器访问(DMA方式)
- DMA方式完全由硬件进行成组信息传送的控制方式。
- DMA方式中:主存与I/O设备之间有一条数据通路,主存与I/O设备交换信息时,不需要调用中断服务程序。
- 如果出现DMA和CPU同时访问主存时,CPU总是将总线占用权让给DMA,通常把DMA这种占有称窃取或挪用。
- 窃取的时间一般为一个存储周期,所以把DMA占用的存取周期称为窃取周期或挪用周期。
三、I/O接口
3.1 I/O接口主要功能
①进行地址译码和设备选择。CPU送来选择外设的地址码后,接口需要进行译码产生设备选择信息,使主机能和指定的外设交换信息。
②实现数据缓冲达到数据匹配。CPU和外设间速度往往不匹配。
③实现主机和外设的通信联络控制
④实现信号格式的转换
⑤传送控制命令
⑥反映设备的状态
3.2接口的基本组成
四、程序中断方式
4.1中断
计算机在执行程序过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行转向对这些异常情况或特殊请求的处理,处理结束后返回现行程序的间断处,继续执行原程序,这就是“ 中断 ”。
例如下图:原程序执行过程中,在K流程遇到需要中断过程,中断服务程序执行完毕,继续在K+1流程继续执行原程序。
4.2 I/O中断响应过程
- 中断源:能够引发CPU发生中断的因素称中断源。
【例】以CPU与打印机部分并行工作为例
4.3 I/O中断服务程序的流程
1.中断服务流程
(1)保护现场(执行完中断后需要返回的原程序):
①程序断点的保护:由中断隐指令完成(硬件自动执行的一系列操作)。
②寄存器内容的保护:由中断服务程序完成。
(2)中断服务:对不同的I/O设备具有不同内容的设备服务。
(3)恢复现场:将原程序中断时的“现场”恢复到原来的寄存器中。
(4)中断返回:返回到原程序的断点处,以便继续执行原程序。
2.单重中断和多重中断
(1)单重中断:在中断服务程序过程中,不允许其他中断进行中断。
(2)多重中断:在中断服务程序过程中,允许级别更高的中断源进行中断当前的中断服务程序。
注:关键在于中断服务程序执行过程中开中断的时间点不同。
五、直接存储器访问(DMA方式)
5.1 DMA和程序中断的差异
- 中断接口需要通过CPU才能与主存进行数据传送
- DMA方式通过一条“直接数据通路”直接与主存进行数据传送
5.2 DMA与主存交换数据
(1)停止CPU访问主存
当外设要求传送一批数据时,由DMA接口向CPU发送一个停止信号,要求CPU放弃地址线、数据线和有关控制线的线权。
即DMA工作时,CPU不执行程序。
(2)周期挪用(周期窃取)
①当CPU没有访问主存时,DMA直接与主存交换数据,不发生冲突。
②CPU正在访问主存时,等待CPU存取周期结束才将总线占有权让出。
③CPU和DMA同时请求访存时,发生了访问冲突,此时CPU将总线控制权让给DMA。
(3)DMA和CPU交替访问
将CPU工作周期分为C1和C2两个周期,C1专供DMA访存,C2专供CPU访存。
这种方法不需要建立和归还总线的使用权。
5.3 DMA的传送过程
DMA传送过程为:预处理→数据传送→后处理
①预处理:通过几条输入输出指令预置如下信息:
- 通知DMA控制逻辑传送方向
- 设备地址→DMA的DAR
- 主存地址→DMA的AR
- 传送字数→DMA的WC
(2)数据传送:DMA占用总线后,由DMA控制器实现数据传送
(3)后处理:DMA控制器向CPU发送中断请求,CPU执行中断服务程序做DMA结束处理。
5.4 DMA与程序中断比较
中断方式 | DMA方式 | |
---|---|---|
数据传送 | 由中断服务程序需要CPU | 直接由硬件不需要CPU |
响应时间 | 指令执行结束 | 存取周期结束 |
处理异常 | 可以 | 不行 |
中断请求 | 传送数据 | 后处理 |
优先级 | 低 | 高 |
计算机组成原理——刘宏伟
参考文献:计算机组成原理第2版—唐朔飞