概述

输入输出系统发展概况

输入输出系统的发展可以分为四个阶段。

首先我们要知道所谓输入输出系统阶段的划分,是根据和主存的信息交换方式来划分的,因为输入的信息最终需要存储的到主存当中,主存当中的信息也是需要输出到一定设备上。

早期阶段

早期阶段的I/O设备都是通过CPU和主存进行信息交换
image.png
这种方式有以下几个特点:

  • 线路庞大复杂:因为每一个I/O设备都需要和CPU配备一套独立的逻辑电路相连。
  • 效率低,浪费时间:和通过CPU和主存做信息交换的时候,CPU需要停止运算。
  • 增减设备困难:I/O设备和CPU的控制器的链接是一个不可分割的整体,彼此依赖互相牵连。

    接口模块和DMA阶段

    这个阶段,系统采用了第三章的总线结构,通过接口模块和主机连接:
    image.png
    通常在接口中都设有数据通路控制通路

  • 数据通路:数据经过接口既起到缓冲作用,又可完成串—并变换或并—串变换。

  • 控制通路:用以传送CPU向I/O设备发出的各种控制命令,或使CPU接受来自I/O设备的反馈信号

许多接口还能满足中断请求处理的要求,使I/O设备与CPU可按并行方式工作,大大地提高了CPU的工作效率。采用接口技术还可以使多台I/O设备分时占用总线(分时复用), 使多台I/O设备互相之间也可实现并行工作方式,有利于整机工作效率提高。
这个阶段中,如果主机需要和I/O做信息交换,CPU仍然需要中断现行程序,所以不能做到绝对的并行
在这个背景下,出现了**DMA技术**,也就是主存和外设直接做信息交换,这样就可以提高效率。

具有通道结构阶段

小型和微型计算机中, 采用**DMA方式**可实现高速外设直接与主机成组数据的交换。在面对中大型计算的时候,就会存在如下问题:

  • 成本上升,控制变复杂:因为每个I/O设备添加DMA接口
  • 占用CPU的工作时间,影响整体效率:CPU需要对众多DMA接口进行管理

所以此时出现了有**通道结构**的计算机系统:
image.png
**通道结构**是用来负责管理I/O设备以及实现主存与I/O设备之间交换信息的部件,可以看做一个特殊的处理器,这个处理器的存在可以使得其管理的I/O设备在和主机交换信息的时候,CPU可以不用参与管理

不是很贴切的一个理解就是可以把通道结构看做一个小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系统专门设置的指令, 这类指令一般用以指明参与传送(写入或读出)的数据组在主存中的**首地址指明需要传送的字数或所传送数据组的**末地址;指明所选设备的设备码及完成某种操作的命令码。

I/O硬件

第五章:输入输出系统 - 图4

看不清没关系,不考。

I/O设备与主机的联系方式

I/O编址方式

一般来说,I/O设备的**设备码**都是看做**地址码**的,对于这个**设备码**的编址方式就有两种:

  • 统一编址

所谓统一编址,就是把主存当中的一部分空间用于存储I/O设备的地址码,如在64K地址的存储空间中,划出8K地址作为I/O的地址,凡是在这8K地址范围内的访问,就是对I/O的访问, 所用的指令与访存指令相似。
这样做的优点是CPU访存和访问I/O设备是一样的,比较方便。
缺点就是:

  1. 占用内存:这些设备码占用了原本的存储空间
  2. 可读性差:需要通过地址码判别存储器中的指令I/O指令还是正常指令
  • 不统一编址(独立编址)

不统一编址就是指I/O地址和存储器地址是分开的,所有对I/O的访问必须有专用的I/O指令
优点:

  1. 不占用内存
  2. 可读性好

缺点:

  1. CPU控制逻辑更复杂
  2. I/O指令不丰富

    设备寻址

    由于每台设备都赋予一个设备号,因此,当要启动某一设备时,可由I/O指令的设备码字段直接指出该设备的设备号。通过接口电路中的设备选择电路,便可选中要交换信息的设备。

    传送方式

    CPU和主机距离串行传输
    CPU和主机距离并行传输

    联络方式

    不论是串行传送还是并行传送, I/O设备与主机之间必须互相了解彼此当时所处的状态,如相互是否可以传送,传送是否已结束等等。这就是I/O设备与主机之间的联络问题。按I/O设备工作速度的不同,可分为三种联络方式。

  3. 立即响应方式:这个方式主要针对工作速度比较慢的设备,只需要CPU一发送I/O指令,这些设备立即响应,开始工作。

  4. 异步工作采用应答信号联络:当I/O设备与主机工作速度不匹配时, 通常采用异步工作方式。这种方式在交换信息前,I/O与CPU各自完成自身的任务,一旦出现联络信号时,彼此才准备交换信息。

image.png

  1. 同步工作采用同步时标联络:同步工作要求I/O设备与CPU的工作速度完全同步

    主机和I/O设备的连接方式

    第五章:输入输出系统 - 图6

    I/O与主机信息传送的控制方式

    程序查询方式

    程序查询方式是由CPU通过程序不断查询I/O设备是否已做好难备,从而控制I/O与主机交换信息。
    第五章:输入输出系统 - 图7
    由这个查询过程可见,只要CPU一启动I/O设备,CPU便不断查询I/O的准备情况,从而终止了原程序的执行
    另一方面,I/O准备就绪后,CPU要一个字一个字地从I/O设备取出,经CPU送至主存,此刻CPU也不能执行原程序,可见这种方式使CPU和I/O处于串行工作状态,CPU的工作效率不高

    程序中断方式

    CPU在启动I/O设备后,对设备是否已准备就绪不加过问,继续执行自身程序,只是当I/O设备准备就绪并向CPU发出中断请求后才予理睬。
    第五章:输入输出系统 - 图8
    由图可见;CPU启动I/O后仍继续执行原程序, 在第K条指令执行结束后,CPU响应了I/O的请求,中断了现行程序,转至中断服务程序,等处理完后又返回到原程序断点处, 继续从第K+1条指令往下执行。由于这种方式使原程序中断了运行,故叫程序中断方式。

    这里的中断服务程序就是去操作I/O设备。

DMA方式

程序中断方式中,CPU在响应中断请求后,必须停止现行程序而转入中断服务程序,并且为了完成I/O与主存交换信息,还不得不占用CPU内部的一些寄存器,这同样是对CPU资源的消耗。在**DMA方式**中,主存与I/O设备之间有一条数据通路,主存与I/O设备交换信息时,无需处理中断服务程序。
若出现DMA和CPU同时访问主存,CPU总是将总线占有权让给DMA,通常把DMA的这种占有叫做“窃取”或“挪用”。
窃取的时间一般为一个存储周期,故又把DMA占用的存取周期叫做“窃取周期”或“挪用周期”。而且,在DMA窃取存取周期时,CPU尚能继续作内部操作(如乘法运算)。
三种方式对比可得:
image.png


I/O接口

概述

什么是接口

接口可以看作是两个系统或两个部件之间的交接部分,它既可以是两种硬设备之间的连接电路,也可以是两个软件之间的共同逻辑边界。

为什么要设置接口

  1. 实现设备的选择:一台机器通常配有多台外设, 他们各自有其设备号(地址)。
  2. 实现数据缓冲达到速度匹配:外部设备种类繁多,速度不一,与CPU速度相差可能很大。
  3. 实现数据**串-并**格式的转换:有些外部设备可能串行传送数据,而CPU一般为并行传送。
  4. 实现电平转换:外部设备的入/出电平可能与CPU的入/出电平不同。
  5. 传送控制命令:CPU启动外部设备工作,要向外设发各种控制信号。
  6. 外部设备需将其工作状态及时向CPU报告,通过接口可监视设备的工作状态,并可保存状态信息,供CPU查询。

    接口的功能和组成

    总线连接方式的I/O接口电路

    第五章:输入输出系统 - 图10
  • 数据线:用于传输数据信息,一般是双向的
  • 设备选择线:用于选择设备,根数取决于I/O指令中设备码的位数
  • 命令线:主要用以传输CPU向设备发出的各种命令信号,其根数与命令信号多少有关
  • 状态线:I/O设备的状态向主机报告的信号线

    接口的功能

  1. 选址功能
  2. 传送命令
  3. 传送数据
  4. 反应I/O设备工作状态

程序查询方式

第五章:输入输出系统 - 图11
步骤如下:
(1)由于这种方式传送数据时要占用CPU中的寄存器,故首先需将寄存器原内容保护起来(若该寄存器中存有有用信息)。
  (2)由于传送往往是一批数据,因此需先设置 设备与主机交换数据的计数值。
  (3)设置欲传送数据在内存缓冲区的首地址。
  然后CPU启动设备,接着以下步骤操作。
  (4)启动外部设备。
  (5)将I/O接口中的设备状态标记取至CPU并测试I/O是否准备就绪。如果未准备就绪,则踏步等待,直到准备就绪为止。当准备就绪时,接着可实现传送。对输入而言,准备就绪意味着接口电路中的数据缓冲寄存器己装满欲传送的数据,叫做“输入缓冲满”,CPU即可取走数据;对输出而言准备就结绪意味着接口电路中的数据已被设备取走,故叫“输出缓冲空”,这样CPU可再次将数据送到接口,设备可再次从接口接收数据。
  (6)CPU执行I/O指令,或从I/O接口的数据缓冲寄存器中读出一个数据,或把一个数据写入到I/O接口中的数据缓冲寄存器内,同时把接口中的状态标记复位。
  (7)修改内存地址。
  (8)修改计数值,若原设置计数值为原码,则依次减1:若原设置计数值为负数补码,则依次加1。
  (9)判断计数值。若计数值不为0,表示一批数据尚未传送完,重新启动外设继续传送;若计数值为0,则表示一批数据已传送完毕。
  (10)结束I/O传送,继续执行其他程序。

过一遍即可。


程序中断方式

中断的概念

计算机在执行程序的过程中,当出现异常情况特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,这就是“中断”。

I/O中断的产生

为什么需要产生中断

在I/O与主机交换信息时,其工作速度较低,与CPU无法匹配,因此,CPU启动设备后,往往需要等待一段时间才能实现主机与设备交换信息。
如果在设备准备的同时,CPU不作无谓的等待,而继续执行现行程序,只有当I/O准备就绪向CPU提出请求后,再暂时中断CPU现行程序转入I/O服务程序,这便产生了I/O中断。

简单来说,就是CPU先启动设备,设备准备过程中CPU执行现行程序,等设备准备好,CPU中断现有程序继续执行I/O相关程序。

以打印机为例:
第五章:输入输出系统 - 图12

引入中断的原因

  1. 适应I/O设备速度低的问题
  2. 防止信息丢失
  3. 即时响应外来信号

    程序中断方式的接口电路

    I/O设备的中断,主要通过硬件层面来实现,为处理I/O中断,在I/O接口电路中必须配置相关的硬件线路。

    中断请求触发器和中断屏蔽触发器

    一个设备想要发出中断请求,就需要中断请求触发器来发送中断请求,也就是**INTR**为输出1的时候,即代表这个设备发送了中断请求:·
    第五章:输入输出系统 - 图13
    这里**MASK**的作用是,当多个设备同时发起中断请求的时候,CPU必须坚持一个原则,即在任何瞬间只能接受一个中断源的请求,所以在I/O接口中需设置一个屏蔽触发器**MASK**,当其为1时,表示被屏蔽,即封锁其中断源的请求。

    排队器

    前面提到,可能会有多个设备同时发起中断,那么CPU就需要根据各个中断的优先级来判别应该优先响应哪些中断。实现设备发送中断优先级的方法可以通过软件方式也可以通过硬件的方式,如果通过硬件方式,就是需要排队器
    第五章:输入输出系统 - 图14
    以上的排队器电路叫做链式排队电路

    中断向量地址形成部件(设备编码器)

    CPU一旦响应了I/O中断,就要暂停现行程序,转去执行该设备的中断服务程序。不同的设备有不同的中断服务程序,每个服务程序都有一个入口地址,CPU必须找到这个入口地址。
    硬件向量法是一种通过向量地址来寻找设备的中断服务程序入口地址的方法,而且向量地址是由硬件电路产生的,如下图所示:
    第五章:输入输出系统 - 图15
    中断向量地址形成部件的输入是来自排队器的输出INTP1……INTPn,输出是用二进制表示的中断向量,其位数与计算机可以处理中断源的个数有关,即一个中断源对应一个向量地址
    第五章:输入输出系统 - 图16

    图中12H、13H、14H是向量地址,200、300分别是打印机服务程序和显示器服务程序的入口地址。

I/O中断处理过程

CPU响应中断的条件和时间

CPU响应I/O提出中断请求的条件是必须满足CPU中的允许中断触发器**EINT****1**。该触发器可用开中断指令置位(称作开中断);也可用关中断指令或硬件自动使其复位(称作关中断)。

也就是开中断状态下,才可以响应中断;关中断状态下,不可以响应中断。

  由前述分析可知,I/O设备准备就绪的时间(即D=1)是随机的,而CPU是在统一的时刻(每条指令执行阶段结束前)向接口发中断查询信号,以获取I/O的中断请求。因此,CPU响应中断的时间一定是在每条指令执行阶段的结束时刻

综上:

  • CPU响应中断的条件:开中断状态
  • CPU响应中断的时间:每条指令执行阶段结束的时刻

I/O中断处理过程

  1. 中断请求
  2. 中断判优
  3. 中断响应
  4. 中断服务
  5. 中断返回

    中断服务程序的流程

    保护现场

    保护现场有两个含意:
  • 其一是保存程序的断点
  • 其二是保存通用寄存器和状态寄存器的内容。

    前者由中断隐指令完成,后者由中断服务程序完成。 通过堆栈的方式保护断点。

中断服务

这是中断服务程序的主体部分,不同的中断请求源其中断服务操作内容是不同的, 如打印机要求CPU将需打印的一行字符代码,通过接口送入打印机的缓冲存储器中,以供打印机打印;又如显示设备要求CPU将需显示的一屏字符代码, 通过接口送入显示器的显示存储器中。

恢复现场

这是中断服务程序的结尾部分,要求在退出服务程序前,将源程序中断时的“现场”恢复到原来的寄存器中。通常可用取数指令出栈指令(POP), 将保存在存储器(或堆栈)中的信息送回到原来的寄存器中。

中断返回

中断服务程序的最后一条指令通常是一条中断**返回指令**,使其返回到原程序的断点处,以便继续执行原程序。


DMA方式

书上了解即可。