输入输出系统

输入输出系统是计算机系统中的主机与外部进行通信的系统。它由外围设备和输入输出控制系统两部分组成,是计算机系统的重要组成部分。外围设备包括输入设备、输出设备和磁盘存储器、磁带存储器、光盘存储器等。从某种意义上也可以把磁盘、磁带和光盘等设备看成一种输入输出设备,所以输入输出设备与外围设备这两个名词经常是通用的。在计算机系统中,通常把处理机和主存储器之外的部分称为输入输出系统,输入输出系统的特点是异步性、实时性和设备无关性。

原理

从信息传输速率来讲,相差也很悬殊。如果把高速工作的主机同不同速度工作的外围设备相连接,保证主机与外围设备在时间上同步要讨论的外围设备的定时问题。
输入/输出设备同CPU交换数据的过程:
输入过程:

  • CPU把一个地址值放在地址总线上,这一步将选择某一输入设备;
  • CPU等候输入设备的数据成为有效;
  • CPU从数据总线读入数据,并放在一个相应的寄存器中。

输出过程:

  • CPU把一个地址值放在地址总线上,选择输出设备;
  • CPU把数据放在数据总线上;
  • 输出设备认为数据有效,从而把数据取走。

输入输出系统的发展

输入输出系统的发展分为4个阶段:
1、早期阶段
早期的I/O设备种类较少,I/O设备与主存交换信息都必须通过CPU,如下图所示:
输入输出系统
这种交换方式延续了相当长的时间。当时的I/O设备具有以下几个特点:
① 每个I/O设备都必须配有一套独立的逻辑电路与CPU相连,用来实现I/O设备与主机之间的信息交换,因此线路十分散乱、庞杂。

② 输入输出过程是穿插在CPU执行程序过程之中进行的,当I/O设备与主机交换信息时,CPU不得不停止各种运算,因此,I/O设备与CPU是按串行方式工作的,极浪费时间。

③ 每个I/O设备的逻辑控制电路与CPU的控制器紧密构成一个不可分割的整体,它们彼此依赖,相互牵连,因此,欲增添、撤减或更换I/O设备是非常困难的。

接口模块和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设备与主存交换信息时能继续完成自身的工作,故资源利用率得到了进一步提高。

具有通道结构的阶段
在小型和微型计算机中,采用DMA方式可实现高速I/O设备与主机之间成组数据的交换,但在大中型计算机中,I/O设备配置繁多,数据传送频繁,若仍采用DMA方式会出现一系列问题。① 如果每台I/O设备都配置专用的DMA接口,不仅增加了硬件成本,而且为了解决众多DMA接口同时访问主存的冲突问题,会使控制变得十分复杂。②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),它基本独立于主机工作,既可完成I/O通道要完成的I/O控制,又可完成码制变换、格式处理、数据块检错、纠错等操作。具有I/O处理机的输入输出系统与CPU工作的并行性更高,这说明I/O系统对主机来说具有更大的独立性。

输入输出系统的组成

输入输出系统由I/O软件和I/O硬件两部分组成。

1、I/O软件输入输出系统软件的主要任务如下:
① 将用户编制的程序(或数据)输入主机内。

② 将运算结果输送给用户。

③ 实现输入输出系统与主机工作的协调等。

不同结构的输入输出系统所采用的软件技术差异很大。一般而言,当采用接口模块方式时,应用机器指令系统中的I/O指令及系统软件中的管理程序便可使I/O设备与主机协调工作。当采用通道管理方式时,除I/O指令外,还必须有通道指令及相应的操作系统。

(1) I/O指令:
I/O指令是机器指令的一类,其指令格式与其他指令既有相似之处,又有所不同。I/O指令可以和其他机器指令的字长相等,但它还应该能反映CPU与I/O设备交换信息的各种特点,如它必须反映出对多台I/O设备的选择,以及在完成信息交换过程中,对不同设备应做哪些具体操作等。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系统专门设置的指令,这类指令一般用以指明参与传送(写入或读取)的数据组在主存中的首地址;指明需要传送的字节数或所传送数据组的末地址;指明所选设备的设备码及完成某种操作的命令码。这类指令的位数一般较长。

通道指令又称为通道控制字(Channel Control Word,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系统的示意图。

一个通道可以和一个以上的设备控制器相连,一个设备控制器又可以控制若干台同一类型的设备。例如,IBM360系统的一个通道可以连接8个设备控制器,一个设备控制器又与8台设备相连,因此,一个通道可以管理64台设备。
输入输出系统

I/O系统层次结构

输入输出系统
用户层软件
与用户交互的接口,用户可直接调用该层的库函数对设备进场操作

设备独立性软件
用于实现用户程序与设备驱动器的统一接口,设备命名,设备保护以及设备分配和释放

设备驱动程序
与硬件相关,用于具体实现系统对设备发出的操作指令。

中断处理程序
保存被中断进场的CPU环境,转入相应的中断处理程序进行处理,处理完恢复现场

模块之间的层次视图

输入输出系统
I/O系统接口
它是I/O系统和上次系统之间的接口,向上层提供设备进行操作的抽象命令,根据设备类型不同,可分为:

  • 块设备接口
    块设备:指数据的存储和传输都是以数据块为单位的设备,常见的是磁盘。磁盘的地址需要用磁道号和扇区号表示,当上层发来读命令的时候,该接口会将抽象的命令转换为磁盘的盘面,磁道和扇区。

  • 流设备接口
    字符设备:数据的存储和传输都是以字节为单位的设备,常见的是键盘,打印机。字符设备通常设立一个字符缓冲区,I/O字符流顺序的进入字符缓冲区,顺序的送出

  • 网络通信接口

软件/硬件(RW/HW)接口
软硬件接口,上面是中断处理程序和用于不同设备的设备驱动程序,下面是各种设备的控制器,这两个接口之间就I/O系统

I/O系统

  • 中断处理程序
    直接与硬件交换,当有中断信号来时,中断处理程序首先保存被中断进场的CPU环境,然后转入相应的设备中断程序处理,处理完后恢复现场。

  • 设备驱动程序
    驱动程序是进程和设备控制器直接的通信程序,将上层发来的抽象I/O请求转换为对I/O设备的具体命令和参数,并把它装入到设备控制器中的命令和参数寄存器。

  • 设备独立性软件
    实现与设备无关,I/O软件独立与具体使用的物理设备。

I/O设备和设备控制器

输入输出系统
设备控制器
输入输出系统
组成:

  • 设备控制器与处理机接口
    实现CPU与设备控制器之间的通信

  • 设备控制器与设备接口
    在控制器上连接一个或者多个设备

  • I/O逻辑
    对设备进行控制,当CPU需要操作一个设备的时候,由I/O逻辑对收到的地址译码,再根据译出的命令对所选的设备进行控制

基本功能:

  • 接收和识别命令
  • 数据交换
  • 标识和报告设备状态
  • 地址识别
  • 数据缓冲区
  • 差错控制

I/O通道
I/O通道是一种特殊的处理机,具有执行I/O命令的能力,并通过执行通道程序来控制I/O操作,指令单一,只能执行I/O操作有关的命令,且通道没有自己内存,与CPU共享内存,其目的是让CPU从繁杂的I/O任务中解脱

通道类型
字节多路通道
输入输出系统
数组选择通道
数组多路通道

中断

中断是CPU对I/O设备发来的中断信号的一种响应

中断的处理方式

  • 屏蔽中断
    当处理机处理一个中断的时候,会屏蔽所有的中断,一直到该中断处理完才会处理新的中断

  • 嵌套中断
    CPU优先响应最高优先级的中断请求,所有高优先级的中断请求可以抢占低优先级的

中断的处理过程:

  • 测定是否有未响应的中断信号
  • 保护被中断进程的CPU环境
  • 转入相应的设备驱动程序
  • 中断处理
  • 恢复COU现场并退出中断

设备驱动程序

设备驱动程序的任务是接收上层软件发来的抽象命令,把它们转变为对应设备的具体参数和命令,发给设备控制器,启动设备执行

设备驱动器处理过程:

  • 将抽象的命令转变为具体设备的命令
  • 对服务请求进行检验
  • 检查设备的状态
  • 传送必要的参数
  • 启动I/O设备

I/O设备的控制方式

  • 使用轮询的可编程I/O方式
    处理机发送出一条I/O指令之后,不断的询问是否I/O命令是否完成,这个方式极大的浪费了CPU的资源

  • 使用中断的可编程I/O方式
    CPU发出一条指令之后,继续执行它原来的任务,由控制器代替CPU指定IO设备,当CPU需要设备的数据时,控制器发出中断信号,告诉CPU数据已经准备好,可以来取。

  • 直接存储器访问方式
    中断I/O方式是一字节为单位进行I/O操作,每当完成一个字节的传输时,就需要中断,让CPU读取,这样产生了直接存储器访问方式,这种方式是以数据块为单位传输,直接送入内存中,只有在开始和结束的时候需要CPU干预,整块数据在控制器的控制下完成。

DMA控制器的组成:

  • 主机与DMA控制器的接口
  • DMA控制器与块设备的接口
  • I/O控制逻辑
    输入输出系统
    I/O通道控制方式
    DMA控制方式虽然进一步减少了CPU对I/O设备的干预,从对字节干预减少到对数据块的干预,但CPU每次发出一条指令,只能读取或写一个连续的数据块,并不能同时对不同的内存区进行操作,所以出现了I/O通道方式,它是对一组数据块进行干预。

要完成对一组数据块操作,只需要想I/O通道发送一条I/O指令,以给出的所要执行的通道程序的首地址和要访问的I/O设备,通道接收到命令之后,通知执行通道程序完成I/O任务。

通道是通过执行通道程序并与设备控制器共同实现IO设备的控制。

通道程序:由一系列的通道指令构成

与设备无关的I/O软件

为了实现设备的无关性,系统采用了逻辑设备名,通过逻辑设备表LUT来实现逻辑设备名对物理设备名的映射

设备分配
系统的设备分为两种:共享设备和独立设备。独立设备由操作系统分配,为了实现对独立设备的分配,操作系统设置了一些数据结构用来记录对设备或控制器控制需要的信息。

设备控制表DCT
输入输出系统
控制器控制表COCT
输入输出系统
通道控制表CHCT
输入输出系统
系统设备表SDT
输入输出系统
分配过程

  • 分配设备
    根据I/O请求的物理设备名查找SDT,找出相对应的DCT,检查DCT中的设备状态字段,设备是否忙碌,如果不忙,检查安全性,分配设备

  • 分配控制器
    分配完设备后,到DCT找出该设备相连接的控制器COCT,从COCT的状态字段看控制器是否忙碌,不忙,分配控制器

  • 分配通道
    分配完控制器,在COCT中找到相连的CHCT,根据CHCT内的状态信息看通道是否忙碌,不忙分配通道

参考文章:
https://baike.baidu.com/item/%E8%BE%93%E5%85%A5%E8%BE%93%E5%87%BA%E7%B3%BB%E7%BB%9F/12618073?fr=aladdin
https://blog.csdn.net/dongyanxia1000/article/details/53785266
https://www.cnblogs.com/chaguang/p/7977434.html

相关文章: