早期的I/O设备种类较少,I/O设备与主存交换信息都必须通过CPU,当时的I/O设备每个都必须具备一套独立的逻辑电路与CPU相连,用来实现I/O设备与主机之间的信息交换;输入输出过程是穿插在CPU执行程序过程之中进行的,当I/O设备与主机交换信息时,CPU不得不停止各种运算。
这个阶段的I/O设备通过接口模块与主机连接,在接口中都设有数据通路和控制通路,数据经过接口既起到缓冲作用,又可完成串-并交换;采用接口技术还可以使多台I/O设备分时占用总线,使多台I/O设备互相之间也可以实现并行工作,可提高整机工作效率。
但在主机与I/O设备交换信息时,CPU要中断运行的程序,并不能做到完全的并行工作。
为了进一步提高CPU的工作效率,又出现了DMA(Direct Memory Access,直接存储器存取)技术,其特点是I/O设备与主存之间有一条直接数据通路使I/O设备可以与主存直接交换信息。
在小型和微型计算机中,采用DMA方式可实现高速I/O设备与主机之间组成数据的交换,但在大中型计算机中,I/O设备配置繁多,数据传送频繁,采用DMA方式会出现一系列问题,因此在大型计算机系统中,采用I/O通道的方式来进行数据交换,通道是用来负责管理I/O设备以及实现主存与I/O设备之间交换信息的部件,可以视为一种具有特殊功能的处理器。
I/O处理机又称为外围处理机,它基本独立于主机工作,既可以完成I/O通道要完成的I/O控制,又可以完成码制变换、格式处理、数据块检错、纠错等操作,具有I/O处理机的输入输出系统与CPU工作的并行性更高,具有更大的独立性。
输入输出系统由I/O软件和I/O硬件两部分组成。
输入输出系统软件的主要任务包括将用户编制的程序或数据输入主机内,将运算结果输送给用户,实现输入输出系统与主机工作的协调等;
I/O指令
I/O指令是机器指令的一类,是CPU指令系统的一部分,其一般格式为操作码+命令码+设备码,操作码可作为I/O指令与其他指令的判别代码,命令码体现I/O设备的具体操作,设备码是多台I/O设备的选择码;
具体来说就是操作码表明是I/O操作,命令码表明是要进行怎样的I/O操作,输入还是输出,设备码指令本次操作是由哪一个I/O设备执行。
通道指令
通道指令是对具有通道的I/O系统专门设置的指令,一般用以指明参与传送的数据组在主存中的首地址,需要传送的字节数或传送数据组的末地址,指明所选设备的设备码及完成某种操作的命令码;在具有通道结构的计算机中,I/O指令不实现I/O数据传送,主要完成I/O设备的启动停止等
输入输出系统的硬件组成是多种多样的,在带有接口的I/O系统中,一般包括接口模块及I/O设备两大部分。
I/O设备与主机交换信息和CPU与主存交换信息相比,有许多不同点,例如,CPU如何对I/O设备编址,如何寻找I/O设备号,I/O设备与主机以什么方式进行联络等。
I/O设备编址方式
通常将I/O设备码看做地址码,对I/O地址码的编址可采用两种方式:统一编址或不统一编址。
设备寻址
由于每台设备都赋予一个设备号,因此当要启动某一设备时,可由I/O指令的设备码字段直接指出该设备的的设备号,通过接口电路中的设备选择电路,便可选中要交换信息的设备;
传送方式
传送方式有并行传送和串行传送,并行传送的特点是传送速度较快,但要求数据线多,例如16位信息并行传送需要16根数据线,串行传送的特点是传送速度较慢,但只需一根数据线和一根地线,当I/O设备与主机距离很远时,采用串行传送较为合理;
联络方式
不论是并行传送还是串行传送,I/O设备与主机之间必须相互了解彼此当时所处的状态,如是否可以传送、传送是否已结束等,按I/O设备工作的速度不同,可分为三种联络方式:
I/O设备与主机的连接方式
I/O设备与主机的连接方式通常有辐射式和总线式两种,采用辐射式连接方式时要求每台I/O设备都有一套控制线路和一组信号线,复杂且不灵活,因此这种连接方式大多出现在计算机发展的初级阶段。现代计算机大多采用总线式连接。
I/O设备与主机交换信息时共有五种控制方式:
程序查询式
由CPU通过程序不断查询I/O设备是否已做好准备,从而控制I/O设备与主机交换信息;只要I/O设备一启动,CPU便不断查询I/O设备的准备情况,从而终止了原程序的执行,CPU在反复查询过程中,犹如原地踏步,另一方面,I/O设备准备就绪后,CPU要一个字一个字的从I/O设备取出,经CPU送至主存,因此这种方式使CPU和I/O设备处于串行工作状态,CPU的工作效率不高。
程序中断方式
在启动I/O设备后,CPU不查询I/O设备是否已准备就绪,而是继续执行自身程序,只有当I/O设备准备就绪并向CPU发出中断请求后才予以响应;采用程序中断方式,CPU和I/O接口不仅在硬件方面需增加相应的电路,在软件方面也必须编制中断服务程序。
DMA方式
在程序中断方式中,CPU在响应中断后,必须停止现行程序而转入中断服务,并且为了完成I/O设备与主存交换信息,还必须占用CPU内部的一些寄存器,这同样是对CPU资源的消耗,如果I/O设备能直接与主存交换信息而不占用CPU,CPU的资源利用率又可以进一步提高,也就是DMA,直接存储器存取方式;在DMA方式中,主存与I/O设备之间有一条数据通路,主存与I/O设备交换信息时,无须调用中断服务程序,当出现DMA和CPU同时访问主存,CPU总是将总线占有权让给DMA。
I/O通道方式
通道是用来负责管理I/O设备以及实现主存与I/O设备之间交换信息的部件,可以视为一种具有特殊功能的处理器
I/O处理机方式
I/O处理机又称为外围处理机,它基本独立于主机工作,既可以完成I/O通道要完成的I/O控制,又可以完成码制变换、格式处理、数据块检错、纠错等操作,具有I/O处理机的输入输出系统与CPU工作的并行性更高,具有更大的独立性。
I/O设备的组成通常包括设备控制器和机、电、磁、光部件,设备控制器用来控制I/O设备的具体动作,I/O设备的具体结构大致与机、电、磁、光的工作原理有关;
键盘:键盘是应用最普遍的输入设备,按键是由人工操作的,确认按下的是哪一个键可用硬件或软件的方法来实现;采用硬件确认哪个键被按下的方法称为编码键盘法,它由硬件电路形成对应被按键的唯一编码信息,再翻译成ASCII码,由计算机接收;采用软件判断的方法称为非编码键盘法,这种方法利用简单的硬件和一套专用键盘编码程序来判断按键的位置,然后由CPU将位置码经查表程序转换成相应的编码信息;
鼠标:
触摸屏:
显示屏:显示屏种类繁多,按显示器件划分可分为阴极射线管(CRT)显示器,液晶显示器和等离子显示器等;
CRT是目前应用最广泛得显示器件,即可作为字符显示器又可显示图像;CRT是一个漏斗形的电真空器件,由电子枪、荧光屏和偏转装置组成;分辨率和灰度等级是CRT的两个重要技术指标,分辨率是指显示屏能表示的像素点数,分辨率越高图像越清晰,灰度等级是指显示像素点相对亮暗的级差,在彩色显示器中它还表现为色彩的差别。
CRT荧光屏发光是由电子束轰击荧光粉产生的,其发光亮度一般只能维持几十毫秒,为了使人眼能看到稳定的图像,电子束必须在图像变化前不断地进行整个屏幕的重复扫描,这个过程称为刷新,每秒刷新的次数称为刷新频率;
字符显示器
字符显示器是计算机系统中最基本的输出设备,它通常由CRT控制器和显示器组成
显示存储器VRAM:显示存储器存放欲显示字符的ASCII码,其容量与显示屏能显示的字符个数有关,如显示屏上能显示80列*25行=2000个字符,则显示存储器的容量应为2000×8(字符编码7位,闪烁1位),每个字符所在存储单元的地址与字符在荧光屏上的位置一一对应;
字符发生器:由于荧光屏上的字符由光点组成,而显示存储器存放的是ASCII码,因此必须有一个部件能将每个ASCII字符码转换转变为一组一组的光点矩阵信息,具有这种变换功能的部件就称为字符发生器
如上图“C”的9个单元中,所存储的9组光点代码分别为011111110、100000001、100000000等等,设1代表两点,0代表暗点;
CRT控制器:CRT控制器通常都做成专用芯片,它可用来接收来自CPU的数据和控制信号,并给出访问显示存储器的地址和访问字符发生器的光栅地址等。
图形显示器
图形显示器是用点、线、面组合成平面或立体图形的显示设备,利用CRT显示器产生图形有两种方法,一种是随机扫描法,另一种是光栅扫描法;
随机扫描法在随机扫描时,电子束产生图形的过程和人用笔在纸上画图的过程相似,任何图形的线条都被认为是由许多微小的首尾相接的线段来逼近的,这些微小的线段称为矢量,故这种方法又称为矢量法;与此法相对应的显示器称为随机扫描图形显示器,其缺点是在显示复杂图形时,会出现闪烁现象;
与光栅扫描法对应的显示器称为光栅扫描图形显示器,其特点是把对应于屏幕上的每个像素信息都存储在刷新存储器中,光栅扫描时,读出这些像素来调制CRT的灰度,以便控制屏幕上像素的亮度,同样也需要不断地对屏幕进行刷新,使图形稳定显示;
图像显示器
图像显示器所显示的图像通常来自客观世界,即遥感图像、自然景物等,图像显示器是把由计算机处理后的图像以点阵的形式显示出来,通常采用光栅扫描方式;
汉字的处理设备
计算机进行汉字信息处理时,必须将汉字代码化,即对汉字进行编码,汉字编码可分为输入码、内码和字形码三大类,输入码是解决汉字的输入识别问题的,内码是由输入码转换而成的,只有内码才能在计算机内进行加工处理,字形码能显示或打印输出;
I/O接口通常是指主机与I/O设备之间设置的一个硬件电路及其相应的软件控制。不同的I/O设备都有其相应的设备控制器,而它们往往都是通过I/O接口与主机取得联系的,之所以要在主机与I/O设备之间设置接口,是因为:
在总线结构的计算机中,每一台I/O设备都是通过I/O接口挂到系统总线上的,I/O总线包括数据线、设备选择线、命令线和状态线。
数据线是I/O设备与主机之间数据代码的传送线,其根数一般等于存储字长的位数或字符的位数,通常是双向的,但也可以是单向的。
设备选择线是用来传送设备码的,它的根数取决于I/O指令中设备码的位数,如果把设备码看做是地址号,那么设备选择线又可称为地址线。
命令线主要用以传输CPU向I/O设备发出的各种命令信号,它是一组单向总线,其根数与命令信号多少有关。
状态线是将I/O设备的状态向主机报告的信号线,是一组单向总线。
I/O接口按不同方式分类有以下几种:
程序查询方式的核心问题在于每时每刻需不断查询I/O设备是否准备就绪。当I/O设备较多时,CPU需按各个I/O设备在系统中的优先级进行逐级查询,为了正确完成这种查询,通常要执行以下3条指令:
图中设备选择电路用以识别本设备地址,当地址线上的设备号与本设备号相符,SEL有效时,可接收命令;数据缓冲寄存器用于存放欲传送的数据;D是完成触发器;B是工作触发器。
以输入设备为例,该接口的工作过程如下:
计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,继续执行原程序,这就是中断。通常把实现这种功能所需的软硬件基数统称为中断技术。
在I/O设备与主机交换信息时,由于设备本身机电特性的影响,其工作速度较低,与CPU无法匹配,因此CPU启动设备后往往需要等待一段时间才能实现主机与I/O设备之间的信息交换。如果在设备准备的同时,CPU不做无谓的等待,而继续执行现行程序,只有当I/O设备准备就绪向CPU提出请求后,再暂时中断CPU现行程序转入I/O服务程序,这便产生了I/O中断。
中断技术不仅仅应用于I/O设备工作速度低的问题,当计算机遇到突然掉电这种异常情况,若能在突然掉电的瞬间立即启动另一个备份电源,并迅速进行一些必要的处理,将有用信息送至存储系统内,待电源恢复后再接着使用,避免信息丢失,这种基数也要应用中断技术来实现。又如,在实时控制领域,要求CPU能即时响应外来信号的请求,并能完成相应的操作,也都需要采用中断技术。
为处理I/O中断,在I/O接口电路中必须配置相关的硬件线路。
中断请求触发器和中断屏蔽触发器
每台外部设备都必须配置一个中断请求触发器INTR,当其为1时,表示该设备向CPU提出中断请求,但是当设备想提出中断请求时,设备本身比逊是准备就绪的,即接口内的完成触发器D的状态必须为1。
由于计算机应用的范围越来越广泛,向CPU提出中断请求的原因也越来越多,为此,把凡是能向CPU提出中断请求的各种因素统称为中断源,当多个中断源向CPU提出中断请求时,CPU在任何瞬间只能接受一个中断源的请求。所以CPU必须对各中断源的请求进行排队,且优先接受级别最高的中断源的请求。这样,在I/O接口中需设置一个屏蔽触发器MASK,当其为1时,表示被屏蔽,即封锁其中断源的请求。
由此可见,仅当设备准备就绪(D=1),且该设备未被屏蔽(MASK=0)时,CPU的中断查询信号可将中断请求触发器置为1。
排队器
就I/O中断而言,速度越高的I/O设备,优先级越高,因为若CPU不及时响应高速I/O的请求,其信息可能会丢失。
设备优先权的处理可采用硬件方法,也可采用软件方法。硬件排队器的实现方法很多,即可在CPU内部设置一个统一的排队器,对现有中断源进行排队,也可在接口电路内分别设置各个设备的排队器。
设备编码器
CPU一旦响应了I/O中断,就要暂停现行程序,转去执行该设备的中断服务程序。不同的设备有不同的中断服务程序,每个服务程序都有一个入口地址,CPU必须找到这个入口地址。
入口地址的寻找也可使用硬件或软件的方法来完成。例如硬件向量法,所谓硬件向量法,就是通过向量地址来寻找设备的中断服务程序入口的地址,而且向量地址是由硬件电路产生的。
CPU响应中断的条件和时间
CPU响应I/O设备提出中断请求的条件是必须满足CPU中的允许中断触发器EINT为1。CPU是在统一的时刻(每条指令执行阶段结束前)向接口发出中断查询信号,以获取I/O的中断请求,因此CPU响应中断的时间一定是在每条指令执行阶段的结束时刻。
以输入设备为例,结合上图,说明I/O中断处理的全过程,当CPU通过I/O指令的地址码选中某设备后,则
(1)由CPU发启动I/O设备命令,将接口中的B置为1,D置为0;
(2)接口启动输入设备开始工作;
(3)输入设备将数据送入数据缓冲寄存器;
(4)输入设备向接口发出设备工作结束信号,将D置为1,B置为0,标志设备准备就绪;
(5)当设备准备就绪(D=1),且本设备未被屏蔽(MASK=0)时,在指令执行阶段的结束时刻,由CPU发出中断查询信号;
(6)设备中断请求触发器INTR被置为1,标志设备向CPU提出中断请求。与此同时INTR送至排队器,进行中断判优;
(7)若CPU允许中断(EINT=1),设备又被排队选中,即进入中断响应阶段,由中断响应信号INTA将排队器输出送至编码器形成向量地址;
(8)向量地址送至PC,作为下一条指令的地址;
(9)由于向量地址中存放的是下一条无条件转移指令,故这条指令执行结束后,即无条件转至该设备的服务程序入口地址,开始执行中断服务程序,进入中断服务阶段,通过输入指令将数据缓冲寄存器的输入数据送至CPU的通用寄存器,再存入主存相关单元;
(10)中断服务程序的最后一条指令是中断返回指令,当其执行结束时,即中断返回至原程序的断点处。
可将一次中断处理过程简单地归纳为中断请求、中断判优、中断响应、中断服务和中断返回5个阶段。
一般中断服务程序的流程分为四大部分:保护现场、中断服务、恢复现场和中断返回:
计算机在处理中断的过程中,有可能出现新的中断请求,此时如果CPU暂停现行的中断服务程序,转去处理新的中断请求,这种现象称为中断嵌套或多重中断。
由于主存和DMA接口之间有一条数据通路,因此主存和设备交换信息时,不通过CPU,也不需要CPU暂停现行程序为设备服务,省去了保护现场和恢复现场,因此工作速度比程序中断方式的工作速度高。
在DMA方式中,由于DMA接口与CPU共享主存,这就有可能出现两者争用主存的冲突。为了有效地分时使用主存,通常DMA与主存交换数据时采用如下三种方式:
DMA接口的功能
DMA接口的基本组成
(1)DMA传送过程
DMA的数据传送过程分为预处理、数据传送和后处理三个阶段
(2)DMA接口与系统的连接方式
DMA接口与系统的连接方式有两种,一是具有公共请求线的DMA请求,
二是独立的DMA请求
(3)DMA小结
与程序中断方式相比,DMA方式有如下特点:
现代集成电路制造技术已将DMA接口制成芯片,通常有选择型和多路型两类。
(1)选择型DMA接口
这种类型的DMA接口的特点是在物理上可连接多个设备,在逻辑上只允许连接一个设备,即在某一段时间内,DMA接口只能为一个设备服务。特别适用于数据传输率很高的设备。
(2)多路型DMA接口
多路型DMA接口不仅在物理上可以连接多个设备,而且在逻辑上也允许多个设备同时工作,各个设备采用字节交叉的方式通过DMA接口进行数据传送。特别适用于同时为多个数据传输率不十分高的设备服务。