跳到主要内容

IO控制方式

程序查询方式

完全软件

由CPU通过程序循环检测IO设备是否就绪,从而控制IO设备被和主机交换信息

程序中断方式

程序实现数据传送,但中断处理需要硬件

CPU接口不仅在硬件方面需要增加相应的电路,而且在软件方面还必须编址中断服务程序

IO中断处理过程

  1. CPU启动IO设备,device_staus=0B=1

  2. 接口启动输入设备开始工作

  3. 输入设备将数据送入数据缓存器

  4. 输入设备向接口发出设备工作结束,将D=1B=0.设备准备就绪

  5. 指令执行阶段结束时,CPU发出中断查询信号

  6. INTR=1标志设备向CPU发出中断请求,与此同时INTR送至排队器进行中断判优

  7. CPU允许中断EINT=1,设备有被排队选中,即进入中断响应阶段,由中断响应信号INTA将排队器送至编码器形成向量地址

  8. 向量地址送至PC,作为下一条指令的地址

  9. 向量地址中存放的是一条无条件转移指令,这条指令结束后无条件转至设备的服务程序入口地址,开始执行中断服务层程序,进入中断服务阶段,通过输入指令将数据缓冲存储器的输入数据送至CPU的通用寄存器,再存入主存的相关单元。

  10. 中断服务程序的最后一条指令是中断返回指令,当其执行结束时,中断返回至源程序的断点处,至此一个完成的程序中断处理的过程宣告结束。中断返回指令不等于无条件转移指令,还需要恢复寄存器现场.

DMA方式

Direct Memory Access完全硬件

直接内存访问,完全由硬件进行成组信息传送的控制方式。经常用于磁盘、显卡、声卡、网卡等高速设备。IO直接与主存交换信息,不占用CPU,无需调用中断程序(中断的作用仅限于故障和正常传送结束时的处理)。

主存中开辟专用缓冲区、及时供给和接收外设的数据

DMA控制器:必须具有控制系统总线的能力,包括命令寄存器,内存地址寄存器,数据寄存器,数据计数器

DMA在传送开始前要通过程序进行预处理,数据传输结束后要通过中断方式进行后处理。 CPU对DMA请求的响应可以发生在任何一个机器周期结束时。

  • 预处理:CPU完成一些必要的准备工作,测试IO设备状态,初始化DMA控制器中有关寄存器、设置传送方向,启动设备等,然后CPU返回执行原来程序。IO设备准备好发送数据或接受数据后,IO设备向DMA控制器发出DMA请求,在由DMA控制器想CPU发送总线请求,用以传输数据。

  • 数据传输:单位可以是字节、字、块。数据传输阶段完全由DMA控制

  • 后处理:DMA控制器向CPU发出终端请求,执行中断服务程序做DMA结束处理,包括校验送入主存的数据是否正确,测试传送过程是否出错(出错则转向诊断程序),决定是否继续使用DMA传送其他数据等

周期挪用

指利用CPU不访问存储器的那些周期来实现DMA操作,此时DMA可以使用总线而不用通知CPU也不会妨碍CPU的工作。周期挪用并不减慢CPU的操作,但可能需要复杂的时序电路,而且 数据传送过程是不连续的和不规则的。

在这种方法中,每当IO设备发出DMA请求时,IO设备便挪用或窃取总线占用权一个或几个主存周期,而DMA不请求时,CPU仍继续访问主存。与CPU暂停访存的方式相比,它既实现了I/O传送,又较好地发挥了主存与CPU的效率,是一种广泛采用的方法。

IO设备要求DMA传送会遇到三种情况,一种是此时CPU不需访问主存(如CPU正在执行乘法指令,由于乘法指令执行时间较长,此时CPU不需访问主存),故IO设备访存与CPU不发生冲突。第二种情况是IO设备要求DMA传送时,CPU正在访存,此时必须待 存取周期结束时刻,CPU才能将总线占有权让出。第三种情况是IO设备要求访存时,CPU也要求访存,这就出现了访存冲突。此刻,IO访存优先于CPU访存,因为IO不立即访存就可能丢失数据,这时IO要窃取一二个存取周期,意味着CPU在执行访存指令过程中插入了DMA请求,并挪用了一二个存取周期,使CPU延缓了一二个存取周期再访存。

应该指出,IO设备每挪用一个主存周期都要申请总线控制权、建立总线控制权和归还总线控制级权。因此,尽管传送一个字对主存而言只占用一个主存周期,但对DMA接口而言,实质上要占2—5个主存周期(由逻辑线路的延迟特性而定)。因此周期挪用的方法比较适合于I/O设备的读写周期大于主存周期的情况。

通道

软硬结合

用来负责管理IO设备以及实现主存和IO设备之间交换信息的部件,可以视为一种具有特殊功能的处理器。通道有专门的通道指令,能独立的执行用通道指令所编写的输入输出程序,但不是一个完全独立的处理器,依据CPU的IO指令进行启动、停止或改变工作状态,是从属于CPU的一个专用处理器。通道指令:通道控制字,对具有通道的IO系统专门设置的指令。是通道用于执行IO操作的指令,可以由管理程序存放在主存中的任何地方,由通道从主存中取出并执行。

  1. 字节多路通道

  2. 数据选择通道

  3. 数据多路通道

Loading Comments...