【计算机组成原理】输入/输出系统(四)—— I/O方式
一、程序查询方式
程序查询方式的工作流程如下:
- CPU执行初始化程序,并预置传送参数。
- 向 I/O接口发出命令字,启动I/O 设备。
- 从外设接口读取其状态信息。
- CPU不断查询 I/O 设备状态,直到外设准备就绪。
- 传送一次数据。
- 修改地址和计数器参数。
- 判断传送是否结束,若未结束转第③步,直到计数器为0。
在这种控制方式下,CPU一旦启动 I/O,就必须停止现行程序的运行,并在现行程序中插入一段程序。程序查询方式的主要特点是 CPU有“踏步”等待现象,CPU 与I/O串行工作。这种方式的接口设计简单、设备量少,但CPU在信息传送过程中要花费很多时间来查询和等待,而且在一段时间内只能和一台外设交换信息,效率大大降低。
在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要100个时钟周期,CPU的时钟频率为50MHz。现有鼠标和硬盘两个设备,而且CPU必须每秒对鼠标进行30次查询,硬盘以32位字长为单位传输数据,即每32位被CPU查询一次,传输率为2×22B/s。求CPU对这两个设备查询所花费的时间比率,由此可得出什么结论?
CPU一旦启动I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。
主要特点:CPU有“踏步”等待现象,CPU与I/O串行工作。
优点:接口设计简单、设备量少。
缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且如果采用独占查询,则在一段时间内只能和一台外设交换信息,效率大大降低。
独占查询:CPU 100%的时间都在查询I/O状态,完全串行
定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次 I/O状态。查询的间隔内CPU可以执行其他程序。
二、程序中断方式
(一)、中断系统
中断的基本概念
程序中断是指在计算机执行现行程序的过程中,出现某些急需处理的异常情况或特殊请求,CPU暂时中止现行程序,而转去对这些异常情况或特殊请求进行处理,在处理完毕后CPU又自动返回到现行程序的断点处,继续执行原程序。
工作流程:
- 中断请求
中断源向CPU发送中断请求信号。 - 中断响应
响应中断的条件。
中断判优:多个中断源同时提出请求
时通过中断判优逻辑响应一个中断源。 - 中断处理
中断隐指令。
中断服务程序。
中断请求的分类
IF:Interrupt Flag,存在PSW中,
IF=1表示开中断(允许中断)
IF=0表示关中断(不允许中断)
中断请求标记
如何判断是哪个设备发来的中断信号?
每个中断源向CPU发出中断请求的时间是随机的。
为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR,
当其状态为“1”时,表示中断源有请求。
这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。
对于外中断,CPU是在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取I/O的中断请求,也就是说,CPU响应中断的时间是在每条指令执行阶段的结束时刻。
CPU响应中断必须满足以下3个条件:
① 中断源有中断请求。
② CPU允许中断即开中断。
③ 一条指令执行完毕,且没有更紧迫的任务。
中断判优-实现
中断判优用于判断有多个中断信号同时到来,先处理哪个?
中断判优既可以用硬件实现,也可用软件实现:
- 硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;
- 软件实现是通过查询程序实现的。
中断判优-优先级设置
- 硬件故障中断属于最高级,其次是软件中断;
- 非屏蔽中断优于可屏蔽中断;
- DMA请求优于I/O设备传送的中断请求;
- 高速设备优于低速设备;
- 输入设备优于输出设备;
- 实时设备优于普通设备。
(二)、中断处理过程
中断处理过程-中断隐指令
并不是一条具体的指令,而是CPU在检测到中断请求时自动完成的一系列动作。
中断隐指令的主要任务:
① 关中断。在中断服务程序中,为了保护中断现场(即CPU主要寄存器中的内容)期间不被新的中断所打断,必须关中断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。
② 保存断点。为了保证在中断服务程序执行完毕后能正确地返回到原来的程序,必须将原来程序的断点(即程序计数器(PC)的内容)保存起来。可以存入堆栈,也可以存入指定单元。
③ 引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址并传送给程序计数器(PC)。
中断处理过程-硬件向量法
中断处理过程-中断服务程序
中断服务程序的主要任务:
① 保护现场
保存通用寄存器和状态寄存器的内容(eg:保存 ACC寄存器的值),以便返回原程序后可以恢复 CPU环境。可使用堆栈,也可以使用特定存储单元。
② 中断服务(设备服务)
主体部分,如通过程序控制需打印的字符代码送入打印机的缓冲存储器中(eg:中断服务的过程中有可能修改ACC寄存器的值)
③ 恢复现场
通过出栈指令或取数指令把之前保存的信息送回寄存器中(eg:把原程序算到一般的ACC值恢复原样)
④中断返回
通过中断返回指令回到原程序断点处。
总结:中断处理过程
(三)、多重中断
单重中断:执行中断服务程序时不响应新的中断请求。
多重中断:又称中断嵌套,执行中断服务程序时可响应新的中断请求。
(四)、中断屏蔽技术
中断屏蔽技术主要用于多重中断,CPU要具备多重中断的功能,须满足下列条件。
① 在中断服务程序中提前设置开中断指令。
② 优先级别高的中断源有权中断优先级别低的中断源。
每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起,便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。
屏蔽字设置的规律:
- 一般用‘1’表示屏蔽,’0’表示正常申请。
- 每个中断源对应一个屏蔽字(在处理该中断源的中断服务程序时,屏蔽寄存器中的内容为该中断源对应的屏蔽字)。
- 屏蔽字中‘1’越多,优先级越高。每个屏蔽字中至少有一个’1’(至少要能屏蔽自身的中断)。
(五)、程序中断过程
假定CPU主频为50MHz,CPI 为4。设备D采用异步串行通信方式向主机传送7位ASCII字符,通信规程中有1位奇校验位和1位停止位,从 D 接收启动命令到字符送入 I/O端口需要0.5ms。请回答下列问题,要求说明理由。
1)每传送一个字符,在异步串行通信线上共需传输多少位?在设备D持续工作过程中,每秒钟最多可向 I/O端口送入多少个字符?
2)设备D采用中断方式进行输入/输出,示意图如下:
I/O端口每收到一个字符申请一次中断,中断响应需10个时钟周期,中断服务程序共有20条指令,其中第15条指令启动D工作。若CPU需从D读取1000个字符,则完成这一任务所需时间大约是多少个时钟周期?CPU用于完成这一任务的时间大约是多少个时钟周期?在中断响应阶段CPU进行了哪些操作?
至少包含1位起始位和1位停止位,停止位可能有多位。
每传送一个字符需要传送1位起始位、7位数据位、1位校验位、1位停止位,共需传送10位。每0.5ms可送入1个字符,每秒可送入 1s/0.5ms = 2000 个字符。
主频50MHz,时钟周期为 1/50MHz = 20ns
0.5ms对应时钟周期数为 0.5ms/20ns = 25000
传送1个字符需要的时钟周期数为 25000 + 10 + 15×4 = 25070
传送1000个字符需要的时钟周期数为 25070×1000 = 25070000
CPU用于该任务的时间大约为 1000×(10+20×4)= 9×
1
0
4
10^4
104 个时钟周期
中断隐指令:
- 关中断
- 保存断点(PC)
- 引出中断服务程序
三、DMA 方式
DMA控制器与主存每次传送1个字。当传送完一整块数据后才向CPU发出中断请求。
1)接受外设发出的DMA请求(外设传送一个字的请求),并向CPU发出总线请求。
2)CPU响应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。
3)确定传送数据的主存单元地址及长度,并能自动修改主存地址计数和传送长度计数。
4)规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作。
5)向CPU报告DMA操作的结束。
注:1、2属于传送前,3、4属于传送时,5属于传送后。
1. DMA控制器
注:在DMA传送过程中,DMA控制器将接管CPU的地址总线、数据总线和控制总线,CPU的主存控制信号被禁止使用。而当DMA传送结束后,将恢复CPU的一切权利并开始执行其操作。
2. DMA传送过程
主存和DMA控制器之间有一条数据通路,因此主存和I/O设备之间交换信息时,不通过CPU。但当I/O设备和CPU同时访问主存时,可能发生冲突,为了有效地使用主存,DMA控制器与CPU通常采用以下3种方法使用主存。
3. DMA方式的特点
主存和DMA接口之间有一条直接数据通路。
由于DMA方式传送数据不需要经过CPU,因此不必中断现行程序,I/O与主机并行工作,程序和传送并行工作。
DMA方式具有下列特点:
① 它使主存与CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。
② 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
③ 主存中要开辟专用缓冲区,及时供给和接收外设的数据。
④ DMA传送速度快,CPU和外设并行工作,提高了系统效率。
⑤ DMA在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。