八、I/O系统
I/O系统
I/O 系统构成
- I/O硬件:外部设备、控制器,I/O接口,I/O控制总线
- I/O软件
- I/O控制方式
程序查询(CPU占用比较高)
中断控制(适合处理随机事件)
DMA(批量传输)
通道(进一步解放CPU)
I/O接口
为什么需要I/O接口(电路)?
微机的外部设备多种多样,工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大
它们不能与CPU直接相连,必须经过中间电路再与系统相连,这部分电路被称为I/O接口电路
I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路
I/O接口的主要功能
- 对输入输出数据进行缓冲和锁存
- 对信号的形式和数据的格式进行变换
- 对I/O端口进行寻址
- 与CPU和I/O设备进行联络
内部结构
数据缓冲寄存器(DBR)
状态寄存器(DSR)
设备命令寄存器(DCR)
地址译码逻辑
数据格式转换逻辑
外部特征: 接口电路外部特性主要体现在引脚上,分成两侧信号:
- 面向CPU一侧的信号(一定并行传输)
(与CPU连接,主要是数据、地址和控制信号) - 面向外设一侧的信号(可能并行可能串行)
I/O设备的编址
计算机中有两种需要编址的器件:1、存储器,2、接口电路。
存储器是对存储单元进行编址,而接口电路是对其中的端口进行编址。
常用的I/O编址有两种:
-
独立编址
外设使用独立的地址空间
需要特殊的I/O指令访问设备 -
统一编址
外设与主存统一编址
主存空间地址划分一部分出来供外设使用
访存指令访问设备,无需I/O指令
CPU与I/O接口的信息交换
外围设备与I/O接口的数据传送
外设种类繁多,存在以下几种情况:
- 不同种类的外设数据传输速率差别很大
- 同一种设备在不同时刻传输速率也可能不同
高速的CPU与速度参差不齐的外设怎样在时间上同步呢?
解决办法是在CPU和外设之间数据传送时加以定时。
- 速度极慢或简单的外设:无条件传送,CPU只需要接受或者发送数据即可。
- 慢速或者中速的设备:应答方式,
异步定时的方式
- 高速外设:同步传送方式,
同步定时方式
CPU与I/O接口的信息交换
- 程序查询方式
由CPU主动通过程序不断查询I/O设备是否已做好准备,从而控制I/O设备与主机交换信息。 - 中断方式
只在I/O设备准备就绪并向CPU发出中断请求时才予以响应。 - 直接内存访问DMA 方式
主存和I/O设备之间有一条直接数据通路,当主存和I/O设备交换信息时,无需调用中断服务程序。
1. 程序查询方式
某一设备一旦被选中,CPU将不停地查询这个设备,看其是否准备就绪。
注: 完全靠计算机程序控制。
2. 中断方式
某一外设的数据准备就绪后,设备“主动” 向CPU发出中断请求信号,当CPU响应这个中断时,便暂停现行程序的运行,自动转移到该设备的中断服务程序,完成数据交换。当中断服务程序执行结束后,CPU又回到原来的程序继续运行。
特点: 跟程序查询方式相比,中断方式更有效。但中断方式的数据传送仍以程序控制,在程序切换过程中存在许多额外操作,如保护断点、保护现场、恢复断点、恢复现场等。
所以传送效率仍然不是很高,只适合中、低速设备的I/O操作。
3. 直接内存访问DMA 方式(Direct Memory Access)
通过硬件控制实现主存与I/O设备间的直接数据传送,在传送过程中无需CPU的干预,数据传送是在DMA控制器控制下进行的。
优点:硬件实现,速度快。可批量数据交换,有利于发挥CPU的效率。
适用于内存和高速外围设备之间大批数据交换的场合。
4、通道方式: CPU下放权限,让通道(输入输出处理器IOP)去管理外设。
注:通道方式效率比DMA更高
程序查询方式
优点:接口设计简单、设备量少。
缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且在一段时间内 只能和一台外设交换信息,效率大大降低。
⭐程序中断方式
中断(Interrupt)是指CPU暂时中止现行程序,转去处理随机发生的紧急事件,处理完后自动返回原程序的功能和技术。
中断系统是计算机实现中断功能的软硬件总称。
- 一般在CPU中设置中断机构,在外设接口中设置中断控制器,在软件上设置相应的中断服务程序。
中断系统的功能包括:
(1)实现主机和外设的并行工作;
(2)处理故障;
(3)实现多道程序和分时操作;
(4)实时控制;
(5)实现人机联系;
(6)实现多机通信。
中断源:能够向CPU发出中断请求的事件。
常见中断源有:
- 输入、输出设备中断。如键盘、打印机等工作过程中已做好接收或发送准备。
- 数据通道中断。如磁盘、磁带等要同主机进行数据交换等。
- 实时时钟中断。
- 故障中断。例如电源掉电、设备故障等要求CPU进行紧急处理等。
- 系统中断(软中断)。如运算过程出现溢出、数据格式非法,数据传送过程出现校验错,控制器遇到非法指令,为了调试程序而设置的中断等等。
中断处理过程流程:
工作流程:
- 中断请求: 中断源向CPU发送中断请求信号。
- 中断响应: 响应中断的条件。
中断判优:多个中断源同时提出请求时通过中断判优逻辑响应一个中断源。 - 中断处理: 中断隐指令。 中断服务程序。
注:
-
中断周期是由硬件实现,而终端服务子程序由机器指令完成,因此中断是由软硬件结合起来实现的
-
关中断:中断屏蔽置位=1(设为1后,就不执行其他的中断请求了)
中断处理过程应注意的几个问题:
- 响应中断时机:外界中断请求是随机的,但CPU只有在当前指令执行完毕后,才转至公操作,在公操作期间判断有没有中断发生
- 断点保护问题(PC,寄存器内容和状态的保存)
- 原子操作:开中断和关中断问题。
每个中断源向CPU发出中断请求的时间是随机的。
为了记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器INTR: 当其状态为“1”时,表示中断源有请求。
这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU中,也可分散在各个中断源中。
CPU响应中断必须满足以下3个条件:
- 中断源有中断请求。
- CPU允许中断即开中断。
- 一条指令执行完毕,且没有更紧迫的任务。(优先级)
中断判优 (既可以用硬件实现,也可用软件实现):
- 硬件实现是通过硬件排队器实现的,它既可以设置在CPU中,也可以分散在各个中断源中;
- 软件实现是通过查询程序实现的。
单级中断(有题)
所有中断源属于同一级,离CPU越近,优先级越高
中断源的识别:串行排队链法(不允许插队)
IR1,IR2,IR3为中断请求信号
IS1,IS2,IS3为中断选中信号
INTI为中断排队输入
INTO为中断排队输出
中断向量的产生
具体过程: 程序中断方式的基本接口
①表示由程序启动外设,将该外设接口的“忙”标志BS置“1”,“准备就绪”标志RD清“0”;
②表示接口向外设发出启动信号;
③表示数据由外设传送到接口的缓冲寄存器;
④表示当设备动作结束或缓冲寄存器数据填满时,设备向接口送出一控制信号,将数据“准备就绪”标志RD置“1”;
⑤表示允许中断标志EI为“1”时,接口向CPU发出中断请求信号;
⑥表示在一条指令执行末尾CPU检查中断请求线,将中断请求线的请求信号接收到“中断请求”标志IR;
⑦表示如果“中断屏蔽”标志IM为“0”时,CPU在一条指令执行结束后受理外设的中断请求,向外设发出响应中断信号并关闭中断;
⑧表示转向该设备的中断服务程序入口;
⑨表示在中断服务程序通过输入指令把接口中数据缓冲寄存器的数据读至CPU中的寄存器;
(10)表示CPU发出控制信号C将接口中的BS和RD标志复位。
中断向量(地址): 当CPU响应中断时,由硬件直接产生一个固定的地址,引导CPU执行中断服务程序 (即向量地址)
由向量地址指出每个中断源设备的中断服务程序入口,这种方法通常称为向量中断。
例1、参见图所示的二维中断系统。请问:
(1)在中断情况下,CPU和设备的优先级如何考虑?请按降序排列各设备的中断优先级。
(2)若CPU现执行设备B的中断服务程序,IM2,IM1,IM0的状态是什么?如果CPU执行设备D的中断服务程序,IM2,IM1,IM0的状态又是什么?
(3)每一级的IM能否对某个优先级的个别设备单独进行屏蔽?如果不能,采取什么办法可达到目的?
(4)假如设备C一提出中断请求,CPU立即进行响应,如何调整才能满足此要求?
解:
(1)在中断情况下,CPU的优先级最低。各设备的优先次序是:A→B→C→ D→E→F→G→H→I→CPU。
(2)执行设备B的中断服务程序时IM2IM1IM0=111;执行设备D的中断服务程序时,IM2IM1IM0=011。
(3)每一级的IM标志不能对某个优先级的个别设备进行单独屏蔽。可将接口中的EI(中断允许)标志清“0”,它禁止设备发出中断请求。
(4)要使设备C的中断请求及时得到响应,可将设备C从第2级取出来,单独放在第3级上,使第3级的优先级最高,即令IM3=0即可。
例二:参见例1所示的系统,只考虑A,B,C三个设备组成的单级中断结构,它要求CPU在执行完当前指令时对中断请求进行服务。假设:(1)CPU“中断批准”机构在响应一个新的中断之前,先要让被中断的程序的一条指令一定要执行完毕;(2)TDC为查询链中每个设备的延迟时间;(3)TA,TB,TC分别为设备A,B,C的服务程序所需的执行时间; (4)TS,TR为保存现场和恢复现场所需的时间;(5)主存工作周期为TM;(6)假定一条指令的执行时间也是TM。 试问:就这个中断请求环境来说,系统在什么情况下达到中断饱和?
如果三个设备同时发出中断请求,那么依次分别处理设备A、设备B、设备C的时间如下:
tA = 2TM + TDC + TS + TA + TR
tB = 2TM + 2TDC + TS + TB + TR
tC = 2TM + 3TDC + TS + TC + TR
处理三个设备所需的总时间为:T=tA+tB+tC
T是达到中断饱和的最小时间,即中断极限频率为f=1/T
多级中断源的识别
(优先级高的可以打断优先级低的中断。)
中断优先排队电路
中断向量产生电路
DMA方式
希望克服程序控制传送的不足:
外设→CPU→存储器
外设←CPU←存储器
直接存储器存取DMA:
外设→存储器
外设←存储器
CPU释放总线,由DMA控制器管理
直接存储器访问(Direct Memory Access)DMA方式是为了在主存储器与I/O设备间高速交换批量数据而设置的。
基本思想是:通过硬件控制实现主存与I/O设备间的直接数据传送,在传送过程中无需CPU的干预,数据传送是在DMA控制器控制下进行的。
优点:速度快。有利于发挥CPU的效率。
过程描述:
- 外设首先向DMA控制器发DMA传送请求,然后DMA控制器向CPU发总线请求,
- 待CPU响应后,由DMA控制器给出当前正在传送的数据的主存地址,并统计传送数据的个数以确定一组数据的传送是否已结束。
- 在主存中要开辟连续地址的专用缓冲器,用来提供或接收传送的数据。
- 在数据传送前和结束后要通过程序或中断方式对缓冲器和DMA控制器进行预处理和后处理。
DMA传送的工作过程
⑴ CPU对DMA控制器进行初始化设置
⑵ 外设、DMAC和CPU三者通过应答信号建立联系:CPU将总线交给DMAC控制
⑶ DMA传送
DMA读存储器:存储器 → 外设
DMA写存储器:存储器 ← 外设
⑷ 自动增减地址和计数,判断传送完成否
DMA传送方式
DMA技术的出现,使外设可以通过DAMC直接访问内存,与此同时,CPU可以继续执行程序。
DMA传送方式是指:DMAC和CPU怎样分时使用内存? 通常采用三种方法:
- 停止CPU访问内存(成组连续传送)
- 周期挪用方式(DMA优先级高)
- DMA和CPU交替访问内存工作方式
1、CPU暂停方式
主机响应DMA请求后,让出存储总线,直到一组数据传送完毕后,DMA控制器才把总线控制权交还给CPU。
优点:控制简单,它适用于数据传输率很高的设备进行成组传送。
缺点:CPU 处于不工作状态或保持状态,未充分发挥CPU 对主存的利用率。
因为,外围设备传送两个数据之间的间隔一般总是大于内存存储周期,即使高速I/O设备也是如此。
注: 采用这种工作方式的I/O设备,在其接口中一般设置有小容量存储器。
I/O设备先与小容量存储器交换数据,然后由小容量存储器与主机交换数据,这样可减少DMA传送占用存储总线的时间,也即减少了CPU暂停工作的时间。
2. 周期挪用方式(DMA优先级高)(广泛采用)
当I/O设备没有DMA请求时,CPU按程序要求访问内存;一旦I/O设备有DMA请求,则由I/O设备挪用一个或几个内存周期。
- 与停止CPU访内的DMA方法比较,周期挪用的方法既实现了 I/O传送,又较好地发挥了内存和CPU的效率,是种广泛采用的方法 。
- 但是I/O设备每次周期挪用都有申请总线控制权、建立总线控制权和归还总线控制权的过程,所以传送1个字对内存来说要占用 1个周期,但对DMA控制器来说 般要2~5个内存周期(视逻辑线路的延迟而定)。
- 适用于 I/O设备读写周期大于内存存储周期的情况。
DMA 访问主存有三种可能:
- CPU 此时不访存(不冲突)
- CPU 正在访存(存取周期结束让出总线)
- CPU 与DMA 同时请求访存(I/O访存优先)
3. DMA和CPU交替访问内存工作方式
不需要总线使用权的申请、建立和归还过程,总线使用权是通过 C1和C2分时控制的。CPU和DMA 控制器各自有自己的访内地址寄存器、数据寄存器和读/写信号等控制寄存器。
优点: 总线控制权的转移速度快,DMA效率高。
缺点:相应的硬件逻辑也就更加复杂。
如果CPU的工作周期比内存存取周期长很多,可以采用该种方法。
DMA数据传送过程
传送一个数据块可以分为三个阶段。
- 进行初始化,即CPU通过程序I/O的方式给DMA控制器预置初值,取状态和设置传送需要的有关参数。
- 由DMA控制器控制外设与主存之间的数据交换。
- CPU中断原程序后进行后处理。
若需要继续交换数据,则又要对DMA进行初始化;若不需要交换数据,则停止外设;若为出错,则转错误诊断及处理程序。
小结及习题
-
各种外围设备的数据传输速率相差很大。如何保证主机与外围设备在时间上同步,则涉及外围设备的定时问题。
-
在计算机系统中,CPU对外围设备的管理方式有:①程序查询方式;②程序中断方式;③DMA方式;④通道方式。每种方式都需要硬件和软件结合起来进行。
-
程序查询方式是CPU管理I/O设备的最简单方式,CPU定期执行设备服务程序,主动来了解设备的工作状态。这种方式浪费CPU的宝贵资源。
-
程序中断方式是各类计算机中广泛使用的一种数据交换方式。当某一外设的数据准备就绪后,它“主动”向CPU发出请求信号。CPU响应中断请求后,暂停运行主程序,自动转移到该设备的中断服务子程序,为该设备进行服务,结束时返回主程序。中断处理过程可以嵌套进行,优先级高的设备可以中断优先级低的中断服务程序。
-
DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续程序。
DMA方式采用以下三种方法:①停止CPU访内;②周期挪用;③DMA与CPU交替访内。
DMA控制器按其组成结构,分为选择型和多路型两类。
传送方式的比较
- 无条件传送:慢速简单外设,总是就绪
- 查询传送: 简单实用,效率较低
- 中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销
- DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送
1.程序查询方式、中断方式和DMA方式的优先级排列次序为( A)。
A.DMA方式、中断方式、程序查询方式
B.中断方式、程序查询方式、DMA方式
C.DMA方式、程序查询方式、中断方式
D.程序查询方式、中断方式、DMA方式