第五章 输入输出系统
除了CPU和存储器两大模块外,计算机硬件系统的第三个关键部分即是输入输出模块,又称输入输出系统。本章重点分析I/O与主机交换信息的三种控制方式(程序查询、中断和DMA)及其相应的接口功能和组成,并对几种常用的I/O设备也作简单介绍。
第一节 概 述
一、输入输出系统的发展概况
输入输出系统的发展大致可分为四个阶段。
1.早期阶段
早期的I/O设备种类较少, I/O设备与主机交换信息都必须通过CPU,如下图所示。
这种I/O设备具有以下几个特点:
(1)每个I/O设备都必须配有一套独立的逻辑电路与CPU相连,用来实现与主机交换信息,因此线路十分零散、庞杂。
(2)输入输出过程是穿插在CPU执行程序之中进行的,当I/O与主机交换信息时,CPU不得不停止其各种运算,因此,I/O与CPU是按串行方式工作的,极浪费时间。
(3)每个I/O设备的逻辑控制电路与CPU的控制器紧密构成一个不可分割的整体,它们彼此依赖,相互牵连,因此,欲增添或撤减或更换I/O设备是非常困难的。
在这个阶段中,计算机系统硬件价格十分昂贵,机器速度不高,配置的I/O设备不多,主机与I/O交换的信息量也不大,计算机应用极不普及。
2.接口模块和DMA阶段
这个阶段I/O设备通过接口模块与主机连接,计算机系统采用了总线结构,如下图所示。
通常在接口中都设有数据通路和控制通路。数据经过接口既起到缓冲作用,又可完成串—并变换或并—串变换。控制通路用以传送CPU向I/O设备发出的各种控制命令,或使CPU接受来自I/O设备的反馈信号。许多接口还能满足中断请求处理的要求,使I/O设备与CPU可按并行方式工作,大大地提高了CPU的工作效率。采用接口技术还可以使多台I/O设备分时占用总线, 使多台I/O设备互相之间也可实现并行工作方式,有利于整机工作效率提高。
虽然这个阶段实现了CPU和I/O并行工作,但是在主机与I/O交换信息时,CPU要中断现行程序,也即CPU与I/O还不能做到绝对的并行工作。
为了进一步提高CPU的工作效率,又出现了DMA(Direct Memory Access)技术,其特点是I/O与主存之间有一条直接数据通路,I/O设备可以与主存直接交换信息,使CPU在I/O与主存交换信息时,能继续完成自身的工作,故其资源利用率得到了进一步的提高。
3.具有通道结构的阶段
在小型和微型计算机中, 采用DMA方式可实现高速外设与主机成组数据的交换,但在大、中型计算机中,外设配置繁多,数据传送频繁,若仍采用DMA方式会出现一系列问题:
(1)如果每台外设都配置专用的DMA接口,不仅增加了硬件成本,而且为了解决众多DMA同时访问主存的冲突问题,会使控制变得十分复杂。
(2)CPU需要对众多的DMA进行管理,同样会占用CPU的工作时间,而且因频繁地进入周期挪用阶段, 也会直接影响CPU的整体工作效率,因此在大、中型计算机系统中,采用了I/O通道的方式来进行数据交换。
通道是用来负责管理I/O设备以及实现主存与I/O设备之间交换信息的部件,它可视为一种具有特殊功能的处理器。通道有专用的通道指令,它能独立地执行用通道指令所编写的输入输出程序,但它不是一个完全独立的处理器,它受CPU的I/O指令启动、停止或改变其工作状态,是从属于CPU的一个专用处理器。依赖通道管理的I/O设备在与主机交换信息时,CPU不直接参与管理,故CPU的资源利用率更高。
4.具有I/O处理机的阶段
输入输出系统发展到第四阶段是具有I/O处理机的阶段。I/O处理机又叫做外围处理机(Peripheral Processor Unit或PPU),它基本独立于主机工作,既可完成I/O通道要完成的I/O控制,还可完成码制变换、格式处理、数据块检错、纠错等操作。 具有I/O处理机的输入输出系统与CPU工作的并行性更高,这说明I/O系统对主机来说,具有更大的独立性。
二、输入输出系统的组成
输入输出系统应该由I/O软件和I/O硬件两部分组成。
1.I/O软件
输入输出系统软件的主要任务是:①如何将用户编制的程序(或数据)输入至主机内;②如何将运算结果输送给用户;③如何实现I/O系统与主机工作的协调等。
不同结构的I/O系统所采用的软件技术差异很大。一般而言,当采用接口模块方式时,应用机器指令系统中的I/O指令及系统软件中的管理程序,便可使I/O与主机协调工作。当采用通道管理方式时,除I/O指令外,还必须有通道指令及相应的操作系统。即使都采用操作系统,不同的机器其操作系统的复杂程度差异也是很大的。
(1)I/O指令。I/O指令是机器指令的一类,它能反映CPU与I/O设备交换信息的各种特点。
指令的一般格式:
操作码
命令码
设备码操作码字段可作为I/O指令与其他类指令(如访存指令、算逻指令、控制指令等)的判别代码;命令码用来体现I/O的具体操作;设备码是作为对多台I/O设备的选择码。
I/O指令的命令码,一般可表述如下几种情况:
·将数据从I/O设备输入至主机。 例如将某台设备接口电路中的数据缓冲寄存器中的数据读至CPU的某个寄存器(如累加器ACC)中:
·将数据从主机输出至I/O设备,例如将CPU中的某个寄存器(如ACC)中的数据写入到某台设备接口电路中的数据缓冲寄存器内;
·状态测试。利用命令码检测各个I/O设备所处伪状态是“忙”(Busy) 还是“准备就绪”(Ready),以便决定下一步是否可进入主机与I/O交换信息的阶段;
·形成某些操作命令。不同I/O设备与主机交换信息时,需完成不同的操作。如磁带机需要正转、反转、读、写、写文件结束等等。又如对于磁盘驱动器,需要读扇区、写扇区、找磁道、扫描记录标识符等。
I/O指令的设备码相当于设备的地址。只有对繁多的I/O设备赋以不同的编号,才能准确选择某台设备与主机交换信息。
(2)通道指令。通道指令是对具有通道的I/O系统专门设置的指令, 这类指令一般用以指明参与传送(写入或读出)的数据组在主存中的首地址;指明需要传送的字数或所传送数据组的末地址;指明所选设备的设备码及完成某种操作的命令码。这类指令的位数一般较长, 如IBM 370机的通道指令为64位。
通道指令又叫通道控制字(CCW)。它是通道用于执行I/O操作的指令,它可以由管理程序存放在主存的任何地方,由通道从主存中取出并执行。通道程序即由通道指令组成,它完成某种外围设备与主存传送信息的操作。例如,将磁带记录区的部分内容送到指定的主存缓冲区内。
通道指令是通道自身的指令,用来执行I/O操作,如读、写、反读、磁带走带及磁盘找道等。而I/O指令是CPU指令系统的一部分,是CPU用来控制输入输出操作的指令,由CPU译码后执行。在具有通道结构的机器中,I/O指令不实现I/O数据传送,主要完成启、停I/O设备,查询通道和I/O设备的状态及控制通道所作的其他一些操作。具有通道指令的计算机,—旦CPU执行了启动I/O的指令后,就由通道来代替CPU对I/O的管理。
2.I/O硬件
输入输出系统的硬件组成是多种多样的,在带有接口的I/O系统中,一般包括接口模块及I/O设备两大部分。
下图是具有通道的I/O系统示意图。
一个通道可以和一个以上的设备控制器相连,一个设备控制器又可以控制若干台同一类型的设备。如IBM 360系统的一个通道可以连接8个设备控制器,一个设备控制器又与8台设备相连,因此,一个通道可以管理64台设备。如果一台机器有6个通道,便可带动384台设备。当然,实际上由于设备利用率和通道的频带影响,主机不可能带动这么多的设备。
三、I/O设备与主机的联系方式
I/O设备与主机交换信息和CPU与主存交换信息相比,有许多不同点。
例如,CPU如何对I/O编址;如何寻找I/O设备号;信息传送是逐位串行还是多位并行;I/O与主机以什么方式进行联络,使它们之间彼此都知道双方处于何种状态:以及I/O与主机是怎么连接的等等。这一系列问题统称为I/O与主机的联系方式。
1.编址方式
通常将I/O设备码视为地址码,对I/O地址码的编址可采用两种方式:统一编址或不统—编址。 统一编址就是将I/O地址看作是存储器地址的一部分。如在64K地址的存储空间中,划出8K地址作为I/O的地址,凡是在这8K地址范围内的访问,就是对I/O的访问, 所用的指令与访存指令相似。不统一编址就是指I/O地址和存储器地址是分开的,所有对I/O的访问必须有专用的I/O指令。显然统一编址占用了存储空间,减少了主存容量,但无需专用的I/O指令。 不统一编址由于不占用主存空间,故不影响主存容量,但需设I/O专用指令 。因此,设计机器时,需根据实际情况权衡考虑选取何种编址方式。
当设备通过接口与主机相连时,CPU可以通过接口地址来访问I/O设备。
2.设备寻址
由于每台设备都赋予一个设备号,因此,当要启动某一设备时,可由I/O指令的设备码字段直接指出该设备的设备号。通过接口电路中的设备选择电路,便可选中要交换信息的设备。
3.传送方式
在同一瞬间,n位信息同时从CPU输送至I/O设备,或由I/O设备输入到CPU, 这种传送方式叫做并行传送。其特点是传送速度较快,但要求数据线多,如16位信息并行传送,需16根数据线。
若在同一瞬间只传送一位信息,在不同时刻连续逐位传送一串信息,这种传送方式叫做串行传送。其特点是传送速度较慢,但它只需一根数据线和一根地线。当I/O设备与主机距离很远时,采用串行传送较为合理,例如远距离数据通讯。
不同的传送方式需配置不同的接口电路,如并行传送接口、串行传送接口或串并联用的传送接口等。用户可按需要选择合适的接口电路。
4.联络方式
不论是串行传送还是并行传送, I/O设备与主机之间必须互相了解彼此当时所处的状态,如相互是否可以传送,传送是否已结束等等。这就是I/O设备与主机之间的联络问题。按I/O设备工作速度的不同,可分为三种联络方式。
(1)立即响应方式。对于一些工作速度十分缓慢的I/O设备, 如指示灯的亮与灭;开关的通与断;A/D转换器缓变信号的输入等等。当它们与CPU发生联系时,通常都已使其处于某种等待状态,因此,只要CPU的I/O指令一到,它们使立即响应,故这种设备无需特殊联络信号,称作立即响应方式。
(2)异步工作采用应答信号联络。当I/O设备与主机工作速度不匹配时, 通常采用异步工作方式。这种方式在交换信息前,I/O与CPU各自完成自身的任务,一旦出现联络信号时,彼此才准备交换信息。下图示意并行传送的异步联络方式。
![]()
当CPU将数据输出到I/O接口后,接口立即向I/O设备发出一个“Ready”(准备就续)信号,告诉I/O设备可以从接口内取数据。I/O设备收到“Ready”后,通常便立即从接口中取出数据,接着便向接口回发一个“Strobe”信号,并让接口转告CPU,接口中的数据已被取走,CPU还可继续向此接口送数。同理,倘若I/O设备需向CPU传送数据,则先由I/O向接口送数据,并向接口发“Strobe”信号,表明数据已送出。接口接到联络信号后便通知CPU可以来取数,一旦CPU取走时,接口便向I/O设备发“Ready”信号,告诉I/O设备,数据已被取走,尚可继续送数。这种一应一答的联络方式称作异步联络。
下图示意了串行传送的异步联络方式。
I/O设备与CPU双方设定一组特殊标记,用“起始”和“终了”来建立联系。图中9.09ms的低电平表示“起始”,又用2×9.09ms的高电平表示“终了”。
(3)同步工作采用同步时标联络。同步工作要求I/O设备与CPU的工作速度完全同步,例如在数据采集过程中,若外部数据以2400位/秒速率传送至接口,则CPU也必须以1/2400秒的速率接收每一位数。这种联络互相之间还得配有专用电路,用以产生同步时标来控制同步工作。
5.I/O与主机的连接方式
I/O设备与主机的连接方式通常有两种:辐射式和总线式。
采用辐射式连接方式时, 要求每台I/O设备都有一套控制线路和一组信号线,因此所 用的器件和连线较多,对I/O设备的增删都比较困难。这种连接方式大多出现在计算机发展的初期阶段。
在总线连接方式,通过一组总线(包括地址线、数据线、控制线等),将所有的I/O设备与主机连接。这种连接方式是现代大多数计算机系统所采用的方式。
四、I/O与主机信息传送的控制方式
I/O设备与主机交换信息时,共有五种控制方式:程序查询方式、程序中断方式、直接存储器存取方式(DMA)、I/O通道方式、I/O处理机方式。
1.程序查询方式
程序查询方式是由CPU通过程序不断查询I/O设备是否已做好难备,从而控制I/O与主机交换信息。采用这种方式实现主机和I/O交换信息,要求I/O接口内设置一个能反映设备是否准备就绪的状态标记,CPU通过对此标记的检测,可得知设备的准备情况。下图示意了CPU欲从某一外设读数据块(例如从磁带上读一记录块)至主存的查询方式流程。当现行程序需启动某设备工作时,即将此程序流程插入到运行的程序中。由图可知,CPU启动I/O后便开始对I/O的状态进行查询。若查得I/O未准备就绪,就继续查询;若查得I/O准备就绪,就将数据从I/O接口送至CPU,再由CPU送至主存。这样一个字一个字地传送,直至这个数据块的数据全部传送结束,CPU又重新回到原现行程序。
由这个查询过程可见,只要CPU-启动I/O设备,CPU便不断查询I/O的准备情况,从而终止了原程序的执行。CPU在反复查询过程中,犹如就地“踏步”。另一方面,I/O准备就绪后,CPU要一个字一个字地从I/O设备取出,经CPU送至主存,此刻CPU也不能执行原程序,可见这种方式使CPU和I/O处于串行工作状态,CPU的工作效率不高。
2.程序中断方式
倘若CPU在启动I/O设备后,对设备是否已准备就绪不加过问,继续执行自身程序,只是当I/O设备准备就绪并向CPU发出中断请求后才予理睬。这将大大提高CPU的工作效率。
由图可见;CPU启动I/O后仍继续执行原程序, 在第K条指令执行结束后,CPU响应了I/O的请求,中断了现行程序,转至中断服务程序,等处理完后又返回到原程序断点处, 继续从第K+1条指令往下执行。由于这种方式使原程序中断了运行,故叫程序中断方式。
下图是采用程序中断方式从外设读数据块到主存的程序流程示意图。
由图可见,CPU向I/O设备发出读命令后,仍在处理其他一些事情(如继续在算题)。当设备向CPU发出请求后,CPU才从I/O接口读一个字经CPU送至主存(这是通过执行中断服务程序完成的)。如果I/O设备的一批数据(一个数据块的全部数据)尚未传送结束时,CPU再次启动I/O设备,命令I/O设备再作准备,一旦又接收到I/O设备中断请求时,CPU又重复上述中断服务过程,这样周而复始,直至一批数据传送完毕。
显然,程序中断方式在I/O进行准备时, CPU不必时刻查询I/O的准备情况,不出现“踏步”现象,即CPU执行程序与I/O设备作准备是同时进行的, 这种方式和CPU与I/O是串行工作的程序查询方式相比,其CPU的资源得到了充分的利用。
3.DMA方式
虽然程序中断方式消除了程序查询方式的“踏步”现象,提高了CPU资源的利用率,但是CPU在响应中断请求后,必须停止现行程序而转入中断服务程序,并且为了完成I/O与主存交换信息,还不得不占用CPU内部的一些寄存器,这同样是对CPU资源的消耗。如果I/O设备能直接与主存交换信息而不占用CPU,那么,CPU的资源利用率显然又可进一步提高,这就出现了直接存储器存取的DMA方式。
在DMA方式中,主存与I/O设备之间有一条数据通路,主存与I/O设备交换信息时,无需处理中断服务程序。若出现DMA和CPU同时访问主存,CPU总是将总线占有权让给DMA,通常把DMA的这种占有叫做“窃取”或“挪用”。窃取的时间一般为一个存储周期,故又把DMA占用的存取周期叫做“窃取周期”或“挪用周期”。而且,在DMA窃取存取周期时,CPU尚能继续作内部操作(如乘法运算)。可见,DMA方式与程序查询和程序中断方式相比,又进一步提高了CPU的资源利用率。
下图 (c)示意了DMA方式的CPU效率。当然,采用DMA方式时,也需增加必要的DMA接口电路。
![]()