第10章输入输出(I/O)系统10.1输入输出(I/O)系统概述10.2程序中断输入输出方式10.3DMA输入输出方式10.4通道控制方式和外围处理机方式10.5总线结构10.6外设接口10.1输入输出(I/O)系统概述输入输出系统包括外部设备(输入输出设备和辅助存储器)及其与主机(CPU和存储器)之间的控制部件。后者称之为设备控制器,诸如磁盘控制器、打印机控制器等,有时也称为设备适配器或接口,其作用是控制并实现主机与外部设备之间的数据传送。本章主要介绍设备控制器的工作原理及其与主机之间传送数据的协议,即系统总线。总线在计算机系统中极其重要!!!10.1.1输入输出设备的编址及设备控制器的基本功能为了CPU便于对I/O设备进行寻址和选择,必须给众多的I/O设备进行编址,也就是给每一台设备规定一些地址码,称为设备号或设备代码。有两种寻址方法:专设I/O指令,例如,指令IN完成输入,指令OUT完成输出操作。指令的地址码字段指出输入输出设备的设备代码。利用访存(取数/存数)指令完成I/O功能,使用这种方法时,从主存的地址空间中分出一部分地址码作为I/O的设备代码,当访问到这些地址时,表示被访的不是主存储器,而是I/O设备寄存器。表10.1给出了输入输出地址部分分配方式。设备控制器(I/O接口)的基本功能是:(1)实现主机和外围设备之间的数据传送控制。包括同步控制、设备选择和中断控制等。DMA设备还具有直接访问存储器功能,并给出存储器地址。(2)实现数据缓冲,以达到主机同外围设备之间的速度匹配。在接口电路中,一般设置一个或几个数据缓冲寄存器。在传送过程中,先将数据送入数据缓冲寄存器,然后再送到目的设备(输出)或主机(输入)。(3)接受主机的命令,提供设备接口的状态,并按照主机的命令控制设备。10.1.2输入输出接口类型:(1)按照数据传送的宽度可分为并行接口和串行接口。在并行接口中,设备和接口是将一个字节(或字)的所有位同时传送。在串行接口中,设备和接口间的数据是一位一位串行传送的,而接口和主机之间是按字节或字并行传送。接口要完成数据格式的串—并变换。(2)按照数据传送的控制方式可分成程序控制输入输出接口,程序中断输入输出接口和直接存储器存取(DMA)接口等。10.1.2I/O设备数据传送控制方式1.程序直接控制方式程序直接控制(programeddirectcontrol)方式就是完全通过程序来控制主机和外围设备之间的信息传送。通常的办法是在用户的程序中安排一段由输入输出指令和其他指令所组成的程序段直接控制外围设备的工作。传送时,首先启动设备,发出启动命令,接着CPU等待外围设备完成接收或发送数据的准备工作。在等待时间内,CPU不断地用一条测试指令检测外围设备工作状态标志触发器。一旦测试到标志触发器已置成“完成”状态,即可进行数据传送。2.程序中断传送方式在程序中断传送(programinterrupttransfer)方式中,通常在程序中安排一条指令,发出START信号启动外围设备,然后机器继续执行程序。当外围设备完成数据传送的准备后,便向CPU发“中断请求”(INT)信号。CPU接到请求后若可以停止正在运行的程序,则在一条指令执行完后,转去执行“中断服务程序”,完成传送数据工作,通常传送一个字或一个字节。传送完毕仍返回原来的程序。3.直接存储器存取方式直接存储器存取(directmemoryaccess,简称DMA)方式的基本思想是在外围设备和主存之间开辟直接的数据传送通路。在正常工作时,所有工作周期均用于执行CPU的程序。当外围设备完成输入或输出数据的准备工作后,占用总线一个工作周期,和主存直接交换数据。这个周期过后,CPU又继续控制总线,执行原程序。如此重复,直到整个数据块的数据传送完毕。这项工作是由I/O系统中增设的DMA控制器完成的,由它给出每次传送数据的主存地址,并统计已传送数据的个数以确定是否传送结束。除了在数据块传送的起始和结束时需用中断分别进行前处理和后处理外,无需CPU的频繁干预。主存储器被并行工作的CPU和I/O子系统所共享。DMA方式不足之处:还是有CPU的干预;大数据仍然容易冲突。4.I/O通道控制(I/Ochannelcontrol)方式“通道”不是一般概念的I/O通路,它是一个专用的名称。通道能独立地执行用通道命令编写的输入输出控制程序,产生相应的控制信号送给由它管辖的设备控制器,继而完成复杂的输入输出过程。通道是一种通用性和综合性都较强的输入输出方式,它代表了现代计算机组织向功能分布方向发展的初始发展阶段。5.外围处理机方式CH的进一步增强。10.2程序中断输入输出方式10.2.1中断的作用、产生和影响1.中断的作用“中断”是由I/O设备或其他非预期的急需处理的事件引起的,它使CPU暂时中断现在正在执行的程序,而转至另一服务程序去处理这些事件。处理完后再返回原程序。中断有下列一些作用:(1)CPU与I/O设备并行工作(2)某些硬件故障的处理(3)实现人机联系(4)实现多道程序和分时操作(5)实现实时处理所谓实时处理,是指在某个事件或现象出现时及时地进行处理,而不是集中起来再进行批处理。这些事件出现的时刻是随机的,而不是程序本身所能预见的,因此,要求计算机中断正在执行的程序,转而去执行中断服务程序。(6)实现应用程序和操作系统(管态程序)的联系:“软中断”、“Trap”。(7)多处理机系统各处理机间的联系2.有关中断的产生和响应的概念(1)中断源引起中断的事件,即发出中断请求的来源,称为中断源。①中断源的种类内中断:处理器硬件故障或程序“出错”引起的中断。外中断:I/O设备、定时钟等来自处理机外部设备的中断。软中断:由“Trap”指令产生的中断,这是在程序中预先安排好的。而前面两种中断则是随机发生的。②中断触发器当中断源发生引起中断的事件时,先将它保存在设备控制器的“中断触发器”中,即将“中断触发器”置“1”。当中断触发器为“1”时,向CPU发出“中断请求”信号。每个中断源有一个中断触发器。全机的多个中断触发器构成中断寄存器。其内容称为中断字或中断码。CPU进行中断处理时,根据中断字确定中断源,转入相应的服务程序。(2)中断的分级与中断优先权在设计中断系统时,要把全部中断源按中断性质和处理的轻重缓急进行排队并给予优先权。所谓优先权是指有多个中断同时发生时,对各个中断响应的优先次序。当中断源数量很多时,中断字就会很长;同时也由于软件处理的方便,一般把所有中断按不同的类别分为若干级,称为中断级,在同一级中还可以有多个中断源。首先按中断级确定优先次序,然后在同一级内再确定各个中断源的优先权。当对设备分配优先权时,必须考虑数据的传输率和服务程序的要求。如果来自某些设备的数据只是在一个短的时间内有效,为了保证数据的有效性,通常把最高的优先权分配给它们。较低的优先权分配给数据有效期较长的设备,以及具有数据自动恢复能力的设备。(3)禁止中断和中断屏蔽①禁止中断产生中断源后,由于某种条件的存在,CPU不能中止现行程序的执行,称为禁止中断。②中断屏蔽当产生中断请求后,用程序方式有选择地封锁部分中断,而允许其余部分中断仍得到响应,称为中断屏蔽。③禁止终端与中断屏蔽的实现一般在CPU内部设有一个“中断允许”触发器。只有该触发器为“1”状态时,才允许处理机响应中断;如果该触发器被清除,则不响应所有中断源申请的中断。前者叫做允许中断,后者叫做禁止中断。对于中断屏蔽,实现方法是为每个中断源设置一个中断屏蔽触发器来屏蔽该设备的中断请求。具体说,用程序方法将该触发器置“1”,则对应的设备中断被封锁,若将其置“0”,才允许该设备的中断请求得到响应。由各设备的中断屏蔽触发器组成中断屏蔽寄存器。有些中断请求是不可屏蔽的,也就是说,不管中断系统是否开中断,这些中断源的中断请求一旦提出,CPU必须立即响应。例如,电源掉电就是不可屏蔽中断。所以,中断又分为可屏蔽中断和非屏蔽中断。非屏蔽中断具有最高优先权。10.2.2中断处理1.中断处理过程(1)关中断,进入不可再次响应中断的状态,由硬件自动实现。(2)保存断点和现场为了在中断处理结束后能正确地返回到中断点,在响应中断时,必须把当前的程序计数器PC中的内容(即断点)保存起来。现场信息一般指的是程序状态字,中断屏蔽寄存器和CPU中某些寄存器的内容。(3)判别中断源,转向中断服务程序。(4)开中断。开中断将允许更高级中断请求得到响应,实现中断嵌套。(5)执行中断服务程序。不同中断源的中断服务程序是不同的,实际有效的中断处理工作是在此程序段中实现的。对于软件工程师而言,实际上就是执行其编写的中断响应函数!!!(6)退出中断。在退出时,又应进入不可中断状态,即关中断,恢复现场、恢复断点,然后开中断,返回原程序执行。实际上,就是进入中断的逆过程。2.判别中断源(中断在哪里?)(1)查询法由测试程序按一定优先排队次序检查各个设备的“中断触发器”(或称为中断标志),当遇到第一个“1”标志时,即找到了优先进行处理的中断源,通常取出其设备码,根据设备码转入相应的中断服务程序。(轮询)(2)串行排队链法INTRi为优先级不同的中断信号3.多重中断处理多重中断是指在处理某一个中断过程又发生了新的中断请求,从而中断该服务程序的执行,又转去进行新的中断处理。这种重叠处理中断的现象又称为中断嵌套。一般情况下,在处理某级中的某个中断时,与它同级的或比它低级的新中断请求应不能中断它的处理,而在处理完该中断返回主程序后,再去响应和处理这些新中断。而比它优先级高的新中断请求却能中断它的处理。10.2.3程序中断设备接口的组成和工作原理程序中断设备接口,一般由设备选择器、中断控制和工作状态逻辑、中断排队控制逻辑、设备码回送逻辑和数据缓冲寄存器等组成。接口标准化,通过总线与主机相连。程序中断控制逻辑已由专用集成电路芯片(Intel8259A)实现。它由八个部分组成:中断请求寄存器、中断状态寄存器、优先级判断器、中断屏蔽寄存器、中断控制逻辑、数据缓冲器、级联缓冲器/比较器和读/写逻辑。10.3DMA输入输出方式DMA是I/O设备与主存储器之间由硬件组成的直接数据通路,用于高速I/O设备与主存之间的成组数据传送。数据传送是在DMA控制器控制下进行的,由DMA控制器给出当前正在传送的数据字的主存地址,并统计传送数据的个数以确定一组数据的传送是否已结束。在主存中要开辟连续地址的专用缓冲器,用来提供或接收传送的数据。在数据传送前和结束后要通过程序或中断方式对缓冲器和DMA控制器进行预处理和后处理。10.3.1DMA三种工作方式1.CPU暂停方式(停止CPU访内)主机响应DMA请求后,让出存储总线,直到一组数据传送完毕后,DMA控制器才把总线控制权交还给CPU,采用这种工作方式的I/O设备,在其接口中一般设置有存取速度较快的小容量存储器,I/O设备与小容量存储器交换数据,小容量存储器与主机交换数据,这样可减少DMA传送占用存储总线的时间,也即减少CPU暂停工作时间。2.CPU周期窃取方式(周期窃取/挪用)DMA控制器与主存储器之间传送一个数据,占用(窃取)一个CPU周期,即CPU暂停工作一个周期,然后继续执行程序。3.直接访问存储器工作方式(DMA和CPU交替访内)这是标准的DMA工作方式,如传送数据时CPU正好不占用存储总线,则对CPU不产生任何影响。如DMA和CPU同时需要访问存储总线,则DMA的优先级高于CPU。在DMA传送数据过程中,不能占用或破坏CPU硬件资源或工作状态,否则将影响CPU的程序执行。