《计算机组成原理》— 输入输出系统

第 11 章 输入输出系统

基本知识点:I/O 系统的概念和组成;I/O 设备与主机的联系方式;I/O 接口的功能和基本结构;I/O 端口及其编址;I/O 地址空间及其编码;四种 I/O 控制方式,包括程序查询方式、程序中断方式、DMA 方式和通道方式的原理和 I/O 过程。

重 点:I/O 端口及其编址;四种 I/O 控制方式。

难 点:四种 I/O 控制方式。

11.1 知识点 1:I/O 系统概述和 I/O 接口

11.1.1要点归纳

1.I/O 系统概述

1)I/O 系统的发展

      计算机主机与外界交换信息时所涉及到的硬件和软件的总称,称为 I/O 系统。I/O 系统的发展大致分为 4 个阶段:

☆ 早期阶段。其主要特点是 I/O 设备与主存交换信息都必须通过 CPU,I/O 设备采用分散连接,CPU 与I/O 设备串行工作,采用程序查询方式。

☆ 接口模块和 DMA 阶段。I/O 设备与主机通过接口模块相连,计算机系统采用了总线结构。CPU 和 I/O 设备并行工作,其工作方式有中断方式和 DMA 方式。

☆ 具有通道结构的阶段。采用通道来管理 I/O 设备以及实现主存与 I/O 设备之间交换信息。有专门的通道指令,能独立地执行用通道指令所编写的 I/O 程序,在 I/O 设备与主机交换信息时,CPU 不直接参与,进一步提高了 CPU 的利用率。

☆ 具有 I/O 处理机的阶段。I/O 处理机基本独立于主机工作,既可完成 I/O 通道要完成的 I/O 控制,又可完成码制变换、格式处理、纠错等操作。具有 I/O 处理机的 I/O系统与 CPU工作的并行性更高。

2)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 指令反映 CPU 与 I/O 设备交换信息的各种特点,是 CPU 指令系统的一部分。

☆ 通道指令:当采用通道方式时,应用通道程序实现 I/O 设备与主机的信息交换。通道指令是对具有通道的 I/O 系统专门设置的指令,用来执行 I/O 操作,如读、写磁盘等。

(2)I/O 硬件

I/O 硬件包括 I/O 设备、I/O 接口和 I/O 总线等,如图11.1 所示。

《计算机组成原理》— 输入输出系统_第1张图片

       I/O 设备具有结构原理和工作速度差异大、时序独立、异步性明显等特点,处理的信息从数据格式到逻辑时序一般不可能直接与 CPU 兼容,所以主机与 I/O 设备间的连接与信息交换不能直接进行,而必须设计一个“接口电路”作为两者之间的桥梁,使 CPU 和 I/O 设备协调工作,这就是 I/O 接口,它通过 I/O 总线与主机相连。

      I/O 设备包含设备控制器和相关设备部件,例如,硬盘由磁盘控制器和磁盘组成。设备控制器用来控制 I/O 设备的具体动作,不同的 I/O 设备完成的控制功能不同,机、电、磁、光部件与具体的 I/O 设备有关,即 I/O 设备的具体结构大致与机、电、光、磁的工作原理有关。

 

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

       I/O 设备与主机交换信息和 CPU 与主存交换信息相比,具有许多不同点。例如,CPU如何寻找 I/O 设备号等,这都统称为 I/O 设备与主机的联系方式。

(1)设备寻址

       设备独立性是指用户在编制程序时所使用的设备与实际使用的设备无关。为了实现设备独立性,每台设备都赋予一个设备号,当要启动某一设备时,由 I/O 指令的设备码字段直接指出该设备的设备号,通过 I/O 接口选择电路中要交换信息的设备。

(2)传送方式

CPU 和 I/O 设备之间的信息传送方式如下。

☆ 并行传送:在同一时刻有 n 位信息同时从 CPU 输出至I/O 设备,或由 I/O 设备输入到 CPU。

☆ 串行传送:在同一时刻只传送一位信息,在不同时刻连续逐位传送一串信息。

(3)联络方式

CPU 和 I/O 设备之间的联络方式如下。

☆ 立即响应方式:只要 CPU 的 I/O 指令一到,便立即响应。常用于速度十分缓慢的 I/O设备。

☆ 异步工作采用应答信号联络:I/O 设备和 CPU 各自完成任务,当出现联络信号时,彼此才开始交换信息,而且采用应答方式。常用于速度与主机不匹配的 I/O 设备。

☆ 同步工作采用同步时标联络:采用统一时钟控制 I/O 操作。常用于与 CPU 工作速度完全同步的 I/O 设备。

(4)I/O 设备与主机的连接方式

I/O 设备与主机的连接方式如下。

☆ 辐射式:每台 I/O 设备有一套控制线路和一组信号线,与主机相关,它们之间互不相连。

☆ 总线式:通过一组总线将所有 I/O 设备与主机连接。

4)I/O 设备与主机信息传送的控制方式

I/O 设备与主机信息传送的控制方式,也就是 CPU通过 I/O 接口对 I/O 设备进行控制的方式,主要有以下几种。

☆ 程序查询方式:由 CPU 通过程序不断查询 I/O 设备是否已做好准备,从而控制 I/O设备与主机交换信息。

☆ 程序中断方式:只在 I/O 设备准备就绪并向 CPU 发出中断请求后才予以响应。

☆ DMA 方式:主存和 I/O 设备之间有一条数据通路,当主存和 I/O 设备交换信息时,无须调用中断服务程序。

☆ 通道方式:在系统中设有通道控制部件,每个通道挂若干 I/O 设备,主机在执行 I/O操作时,只需启动有关通道,通道将执行通道程序,从而完成 I/O 操作。

以上四种控制方式的具体过程在后面介绍,这里不再赘述。

2.I/O 接口

1)什么是 I/O 接口

      I/O 接口是主机和 I/O 设备之间的交接界面,通过接口可以实现主机和 I/O 设备之间的信息交换。主机和 I/O 设备各自具有自己的工作特点,它们在信息形式和工作速度上具有很大的差异,I/O 接口正是为了解决这些差异而设置的。

       在计算机组成原理课程中,I/O设备与CPU之间的接口是I/O接口(I/O控制器),在操作系统课程中,I/O设备与CPU之间的接口是设备控制器。这两者是指同一个部件。

2)I/O 接口的分类

按照电路和 I/O 设备的复杂程度,I/O 接口的硬件主要分为两大类。

☆ I/O 接口芯片:这些芯片大多是集成电路,通过 CPU 输入不同的命令和参数,并控制相关的 I/O 电路和简单的 I/O 设备作相应的操作,常见的接口芯片如定时/计数器、中断控制器、DMA 控制器、并行接口等。

☆ I/O 接口控制卡:有若干个集成电路按一定的逻辑组成为一个部件,或者直接与 CPU同在主板上,或是一个插件插在系统总线插槽上。按照接口的连接对象来分,又可以将它们分为串行接口、并行接口、键盘接口和磁盘接口等。

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

       如图 11.2 所示为总线结构的计算机,每一台 I/O 设备都是通过 I/O 接口挂到系统总线上的,图中的 I/O 总线包括数据线、设备选择线、命令线和状态线。

☆ 数据线:I/O 与主机之间数据代码的传送线,其根数一般等于存储字长的位数或字符的位数,它通常是双向的,也可以是单向的。

☆ 设备选择线:也可称为地址线,用来传送设备码的,它的根数取决于 I/O 指令中设备码的位数。

☆ 命令线:一组单向总线,用以传输 CPU 向设备发出的各种命令信号,如启动清除、读、写等。

☆ 状态线:一组单向总线,将 I/O 设备的状态向主机报告的信号线,如设备是否准备就绪,是否向 CPU 发出中断请求等。

《计算机组成原理》— 输入输出系统_第2张图片

 

4)I/O 接口的功能

I/O 接口的功能如下。

☆ 选址功能:通过设备选择线上的设备号来确定选择哪个设备。设备选择线上的设备号与本设备号相符时,应发出设备选中信号 SEL,这种功能可通过接口内的设备选择电路来实现。

☆ 传送命令的功能:当 CPU 向 I/O 发出命令时,I/O接口应具备传送命令信息的功能,所以通常在 I/O 接口中设有存放的命令寄存器以及命令译码器。命令寄存器用来存放 I/O 指令中的命令码,它受设备选中信号控制。命令线和接口电路的命令寄存器相连,只有被选中的设备 SEL 信号有效,命令寄存器才可接受命令线上的命令码。

☆ 传送数据的功能:要求接口中具有缓冲能力的数据通路,完成数据传送,接口中通常设有数据缓冲寄存器,它用来暂存 I/O 设备与主机准备交换的信息,它与 I/O 总线中的数据线是相连的。

☆ 反映 I/O 设备工作状态的功能:为使 CPU 能及时了解 I/O 设备的工作状态,接口内必须设置一些反映设备状态的触发器。所有的状态触发器都与I/O 总线中的状态线相连,另外根据需要应增设一些中断屏蔽触发器和出错标志触发器等。

5)I/O 接口的类型

按数据传送方式分类如下。

☆ 串行接口:在 I/O 设备和 I/O 接口间一位一位传送。

☆ 并行接口:将一个字节(或一个字)的所有位同时传送。

这里所说的数据传送方式指的是I/O设备和I/O接口一侧的传送方式,而在主机和I/O接口一侧,数据总是并行传送的。

按功能选择的灵活性分类如下。

☆ 可编程接口:I/O 接口的功能和操作方式可用程序来改变或选择。

☆ 不可编程接口:不能由程序来改变其功能,但可通过硬连接逻辑来实现不同的功能。

按数据传送的控制方式分类如下。

☆ 程序型接口:用于连接速度较慢的 I/O 设备,如显示器、键盘等。

☆ DMA 接口:采用 DMA 实现主机和I/O 设备之间的信息交换。

6)I/O 端口及其编址

      当 I/O 设备通过接口与主机相连时,CPU 可以通过 I/O 接口来访问I/O 设备。

      每个 I/O 接口部件都包含一组寄存器,CPU 和 I/O 设备进行数据传输时,各类信息在I/O 接口中进入不同的寄存器,一般称这些寄存器为 I/O 端口(Port),每个端口有一个端口地址。CPU 对各种寄存器的操作,实际上是通过寻址实现的,可以通过端口发送命令、读取状态和传送数据。

(1)I/O 端口地址编址方式

        I/O 端口编址方式有两种:一种是 I/O 映射方式,即把 I/O 端口地址与主存单元地址分别进行独立编址;另一种是存储器映射方式,即把端口地址与主存单元地址统一编址。

☆ 独立编址:主存地址空间和 I/O 端口地址空间是相对独立的,分别单独编址。对 I/O端口的操作使用 I/O 指令(IN/OUT)实现,指令短,执行速度快,可读性强。例如,在 8086 中,其主存地址范围是从 00000H~FFFFFH 连续的 1MB,其 I/O端口的地址范围从 0000H~FFFFH,它们互相独立,互不影响。CPU 访问主存时,由主存读/写控制线控制;访问 I/O 设备时,由 I/O 读/写控制线控制,所以在指令系统中必须设置专门的 I/O 指令。当 CPU 使用 I/O指令时,其指令的地址字段直接或间接地指示出端口地址。

☆ 统一编址:I/O 端口地址和主存单元的地址是统一编址的,把 I/O 接口中的端口作为主存单元一样进行访问,不设置专门的 I/O 指令,利用功能很强的访存指令(如LOAD/STORE 或者 MOV)来访问 I/O 端口,通过地址来区分访问的是存储器还是I/O 端口。每个 I/O 设备至少有两个寄存器:控制状态寄存器和数据缓冲寄存器,I/O设备寄存器的地址码是连续的。例如,在 PDP-11 中,把主存的高 4KB 地址空间留给 I/O 设备接口寄存器和 CPU 内部寄存器使用,这 4KB 存储空间不允许用户再存放其他内容。

(2)独立编址方式的端口访问

利用专门的I/O指令实现对独立编址方式端口的访问,非通道I/O指令的一般格式如下:

 

其中,各字段的含义如下:

☆ 操作码用于区分访存指令和 I/O 指令。

☆ 命令码用于区分 I/O 操作的种类。

☆ 地址码则指明要访问的外设端口地址以及 CPU 寄存器号。

      例如,IBM/PC 机的 I/O 指令只有两条:IN 和 OUT,其中 IN 指令将 I/O 端口中的数据读入累加寄存器 AL(AX),OUT 指令将累加寄存器 AL(AX)的数据写入 I/O 端口。从300H 端口读入一个字节,并发给 20H 端口的指令为:

MOVDX,300H   ;将 300H 送入 DX 寄存器

INAX,DX    ;从 300H 端口读入一个字节并保存在 AX 寄存器中

OUT20H,AX   ;将 AX 寄存器中的内容输出到20H 端口中

       I/O接口与端口是两个不同的概念。端口是指接口电路中的一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,相应的端口分别称为数据端口、控制端口和状态端口。若干个端口加上相应的控制逻辑电路才组成接口。CPU通过输入指令,从端口读入信息,通过输出指令,可将信息写入到端口中。

11.2 知识点 2:I/O 控制方式

11.2.1要点归纳

1. 程序查询方式

1)程序查询方式的基本思想

      程序查询方式是一种程序直接控制方式,其核心思想是每时每刻需要不断查询 I/O 设备是否准备就绪。这是主机与 I/O 设备间进行信息交换的最简单方式,其输入和输出完全是通过 CPU 执行程序来完成的。

2)程序查询方式的工作流程

      在程序查询方式接口中设置一个数据缓冲寄存器(即数据端口,用来存放与 CPU 进行传送的数据信息)和一个设备状态寄存器(即状态端口,包含设备准备就绪标志)。在输入数据时,设备准备就绪标志为 Ready(Ready=1 表示输入设备已准备好,Ready=0 表示输入设备没有准备好),在输出数据时,设备准备就绪标志为 Busy(Busy=1 表示输出设备已准备好,Busy=0 表示输出设备没有准备好)。

程序查询方式的工作流程如图 11.3 所示,其说明如下:

01预置传送参数。在传送数据之前,由 CPU 执行一段程序,预置传送参数。传送参数包括存取数据的主存缓冲区首地址和传送数据的个数。

02向 I/O 接口发出命令字。当 CPU 选中某台 I/O 设备时,执行输出指令向 I/O 接口发出命令字,启动 I/O 设备,为接收数据或发送数据的操作做准备。

03从 I/O 接口取回状态字。CPU 执行输入指令,从 I/O 接口中取回状态字并进行测试,判断数据传送是否可以进行。

04查询 I/O 设备标志。CPU 不断查询状态标志,如果 I/O 设备没有准备就绪,CPU就踏步进行等待,一直到这个 I/O 设备准备就绪,并发出“准备就绪”信号为止。

05传送数据。只有 I/O 设备准备好,才能实现主机与 I/O 设备间的一次数据传送。输入时,CPU 执行输入指令,从 I/O 接口的数据缓冲寄存器中接收数据;输出时,CPU 执行输出指令,将数据写入 I/O 接口的数据缓冲寄存器。

06修改传送参数。每进行一次数据传送,需要修改一次传送参数,其中包括主存缓冲区地址加 1,传送个数减 1。

07判断传送是否结束。如果传送个数不为 0,则跳转至第 3 步,继续传送,直到传送结束为止。

若有多个 I/O 设备需要使用查询方式时,CPU 巡回检查各个 I/O 设备,逐个进行查询,发现哪个 I/O 设备准备就绪,就对该 I/O 设备实施数据传送,然后再对下一 I/O 设备进行查询,依次循环。在整个查询过程中,CPU 不能做别的事。

《计算机组成原理》— 输入输出系统_第3张图片

 

3)程序查询方式的优缺点

程序查询方式的优缺点如下。

☆ 优点:简单,只需要很少的硬件。

☆ 缺点:CPU 与 I/O 设备只能串行工作。由于 CPU 比 I/O 设备的速度快很多,因此CPU 大量的时间都处于空闲等待状态,CPU 效率较低,仅适用于 I/O 设备的数目不多且对 I/O 处理的实时要求不高的情况;CPU 一段时间内只能和一台 I/O 设备交换信息,无法使其他 I/O 设备同时工作;发现和处理预先无法估计的错误和异常情况时比较困难。

2. 程序中断方式

1)程序中断方式的基本思想

在计算机执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回到现行程序的间断处,继续执行原程序,如图11.4 所示。

《计算机组成原理》— 输入输出系统_第4张图片

 

2)程序中断与调用子程序的区别

计算机的中断处理过程看起来有点类似于调用子程序的过程,这里的现行程序相当于主程序,中断服务程序相当于子程序。但是,它们之间却有着本质的区别。

子程序的执行是由程序员事先安排好的(由一条调用子程序指令转入),而中断服务程序的执行则是由随机的中断事件引起的。

子程序的执行受到主程序或上层子程序的控制,而中断服务程序一般与被中断的现行程序毫无关系。

不存在同时调用多个子程序的情况,而有可能发生多个 I/O 设备同时请求 CPU 为自己服务的情况。

3)中断的基本类型

(1)自愿中断和强迫中断

自愿中断:又称程序自中断,它不是随机产生的中断,而是通过在程序中安排有关指令,这些指令可以使机器进入中断处理的过程,如指令系统中的软件中断指令等。

强迫中断:是随机产生的中断,不是程序中事先安排好的。当这种中断产生后,由中断系统强迫计算机中止现行程序并转入中断服务程序。

(2)程序中断和简单中断

程序中断:指前面提到的中断,主机在响应中断请求后,通过执行一段中断服务程序来处理更紧迫的任务。

简单中断:就是 I/O 设备与主存间直接进行信息交换的方法,即 DMA 方式。这种“中断”不去执行中断服务程序,故不破坏现行程序的状态。当主机发现有简单中断请求(也就是 DMA 请求)时,将让出一个或几个存取周期供 I/O 设备与主存交换信息,然后继续执行程序。

(3)内中断和外中断

外中断:是指 CPU 以外的部件引起的中断,包括 I/O 设备发出的中断(简称 I/O 中断)、时钟中断等。

内中断:是指由于 CPU 内部硬件或软件原因引起的中断。内中断一般称为陷入或异常,它包括程序运算引起的各种错误,如地址非法、校验错误、存取访问控制出错、算术操作溢出、非法指令等。

(4)向量中断和非向量中断

向量中断:指那些中断服务程序的入口地址是由中断事件自己提供的中断。中断事件在提出中断请求的同时,通过硬件向主机提供中断服务程序入口地址,即向量地址。

非向量中断:指中断事件不能直接提供中断服务程序的入口地址,而由 CPU 查询之后得到。

(5)单重中断和多重中断

单重中断:在 CPU 执行中断服务程序的过程中不能再被打断。

多重中断:在执行某个中断服务程序的过程中,CPU可去响应级别更高的中断请求,又称为中断嵌套。

4)设置中断的原因

设置中断的原因如下:

☆ 提高 CPU 工作效率,把 CPU 从等待查询 I/O 状态的过程中解放出来。办法是 CPU启动 I/O 后,I/O 设备开始工作,CPU继续处理原来的程序,等待 I/O 工作完成后再来请求 CPU 取走数据。这一情况可称为 CPU 与 I/O 并行工作。

☆ 多台 I/O 设备并行工作,提高 I/O 的运行速度。

☆ 解决实时处理问题。生产过程中若发生异常情况,计算机必须立即处理。

☆ 处理计算机运行过程中出现的故障,发现运算出错或机器故障,应该尽快排除故障再继续运算才有意义。

☆ 实现多机系统或网络环境下计算机间的通信要求。

☆ 提供人机联系的手段。

5)CPU 响应中断的条件

CPU 响应中断的条件如下。

☆ 在 CPU 内部设置的中断允许触发器必须是开放的。

☆ I/O 设备有中断请求时,中断请求触发器必须处于“1”状态,保持中断请求信号。

☆ I/O 设备的中断屏蔽触发器必须为“0”,这样才能把 I/O 设备中断请求送至 CPU。

☆ CPU 在现行指令结束的最后一个状态周期。

☆ 无 DMA 请求。

一旦 CPU 响应中断的条件得到满足,CPU 开始响应中断,转入中断服务程序,进行中断处理。

6)中断优先级与判优方法

中断源是指中断请求的来源,即引起计算机中断的事件,为了记录中断事件并区分不同的中断源,采用中断请求触发器(INTR)来记录中断事件并区分不同的中断源。当多个中断源同时发出中断请求时,CPU 在任何瞬间只能接受一个中断源的请求。通常,把全部中断源按中断的性质和处理的轻重缓急安排优先级,并进行排队。

确定中断优先级的原则是:对那些提出中断请求后需要立刻处理,否则就会造成严重后果的中断源规定最高的优先级;而对那些可以延迟响应和处理的中断源规定较低的优先级,如故障中断一般优先级较高,接着才是 I/O 设备中断。而在 I/O 设备中又可以根据各个设备的速度来决定优先级。

每个中断源均有一个为其服务的中断服务程序,每个中断服务程序都有与之对应的优先级别。另外,CPU 正在执行的程序也有优先级。只有当某个中断源的优先级别高于 CPU现在的优先级时,才能中止 CPU 执行现在的程序。中断判优的方法如下:

☆ 软件判优法。就是用程序来判别优先级。当 CPU 接到中断请求信号(由 INTRi指定)后,就执行查询程序,逐个检测中断请求寄存器的各位状态,检测顺序是按优先级的大小排列的,最先检测的中断源具有最高的优先级,其次检测的中断源具有次高优先级,如此下去,最后检测的中断源具有最低的优先级。这种中断判优方法简单,可以灵活修改中断源的优先级别,但完全靠程序实现,不但占用 CPU 的时间,且速度较慢。

☆ 硬件判优电路。根据中断请求信号的传送方式的不同,有不同的优先排队电路方案,常见的方案有独立请求线的优先排队电路、公共请求线的优先排队电路等,在排队电路中优先级高的中断请求自动封锁优先级低的中断请求。这种方法由于采用硬件实现,所以中断优先级判定可节省 CPU 时间,而且速度快,但是成本较高,无法改变中断请求的优先级。

7)I/O 中断处理过程

CPU 响应中断必须满足 3 个条件,即 CPU 接收到中断请求信号(INTR=1)、CPU 允许中断(EINT=1)和一条指令执行完毕。在这些条件满足后才能进行 I/O 中断处理。

以输入设备为例说明 I/O 中断处理过程如下。

01 由 CPU 发出启动 I/O 设备命令,将接口中的 B(启动设备触发器)置为“1”,D置为“0”。

02 接口启动输入设备开始工作。

03输入设备将数据送入数据缓冲寄存器。

04输入设备向接口发出“设备工作结束”信号,将 D(设备工作结束触发器)置为“1”,B 置为“0”,标志设备准备就绪。

05当设备准备就绪(D=1),且本设备未被屏蔽(MASK=0)时,在指令执行阶段的结束时刻,由 CPU 发出中断查询信号。

06设备中断请求触发器 INTR 被置为“1”,标志设备向 CPU 提出中断请求。与此同时,INTR 送至排队器,进行中断判优。

07若 CPU 允许中断(EINT=1),设备又被排队选中,即进入中断响应阶段,由中断响应信号 INTA 将排队器输出送至编码器形成中断向量地址。

08中断向量地址送至 PC,作为下一条指令的地址。

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

10中断服务程序的最后一条指令是中断返回指令,当其执行结束时,即中断返回至原程序的断点处。至此,一个完整的程序中断处理过程即告结束。

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

8)中断向量地址形成部件

CPU 一旦响应了 I/O 中断,就暂停现行程序,转去执行该设备的中断服务程序。不同的设备有不同的中断服务程序,每个中断服务程序都有一个入口地址,CPU 必须找到这个入口地址即中断向量。

把系统中的全部中断向量集中存放到存储器的某一区域内,这个存放中断向量的存储区就叫中断向量表,即中断服务程序入口地址表。

中断向量地址形成部件输入的是来自排队器的输出信号,输出的是中断向量地址,由这个中断向量地址在中断向量表中找出对应的中断服务程序的入口地址,再执行对应的中断服务程序。图 11.5 说明了通过中断向量地址寻找中断服务程序的过程。

当 CPU 响应中断后,中断硬件会自动地将中断向量地址传送到 CPU,由 CPU 实现程序的切换,这种方法为中断向量法,采用中断向量法的中断称为向量中断。这里介绍的便是向量中断。

中断向量是指中断服务程序的入口地址,中断向量地址是指中断服务程序的

入口地址的地址。

中断向量表

 《计算机组成原理》— 输入输出系统_第5张图片

 

9)中断服务程序的流程

不同设备的服务程序是不相同的,可它们的程序流程又是类似的,一般中断服务程序的流程分为 4 大部分:

☆ 保护现场。保存程序的断点以及通用和状态寄存器的内容。前者是由中断隐指令完成,后者是由中断服务程序完成(将寄存器的内容保存到存储器中,或用进栈指令PUSH 将各寄存器的内容推入栈中保存),将程序中断时的“现场”保存起来。

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

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

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

如图 11.6 所示是单重中断和多重中断服务程序流程。其中,关中断操作将中断允许触发器 EINT 置为“0”,而开中断操作是将中断允许触发器 EINT 置为“1”。

10)中断隐指令

CPU 响应中断之后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的,称之为中断隐指令。中断隐指令并不是指令系统中真正的指令,它没有操作码,所以中断隐指令是一种不允许、也不可能为用户使用的特殊指令。其所完成的主要操作如下。

☆ 保存断点。将原来程序的断点(即程序计数器 PC 的内容)保存起来。

☆ 暂不允许中断。为了在利用软件保护中断现场(即 CPU 的主要寄存器状态)时,不被新的中断所打断,从而保证被中断的程序在中断服务程序执行完毕之后能接着正确地执行下去。

☆ 引出中断服务程序。引出中断服务程序的实质就是取出中断服务程序的入口地址,送至程序计数器。

 《计算机组成原理》— 输入输出系统_第6张图片

 

11)多重中断和中断屏蔽

(1)中断嵌套

中断嵌套的层次可以有多层,越在里层的中断越急迫,优先级越高,因此优先得到 CPU的服务。要使计算机具有多重中断的能力,首先要能保护多个断点。先发生的中断请求的断点,先保护后恢复;后发生的中断请求的断点,后保护先恢复。堆栈的先进后出特点正好满足多重中断这一先后次序的需要。在 CPU 进入某一中断服务程序之后,系统必须处于开中断状态,否则中断嵌套是不可能实现的。

(2)允许和禁止中断

允许中断还是禁止中断是由 CPU 中的中断允许触发器控制的,当中断允许触发器被置为“1”时,则允许中断,当中断允许触发器被置为“0”时,则禁止中断。允许中断即开中断,下列情况时应开中断:

☆ 在中断服务程序执行完毕,恢复中断现场之后。

☆ 在多重中断的情况下,保护中断现场之后。禁止中断即关中断,下列情况时应关中断:

☆ 当响应某一级中断请求,不再允许被其他中断请求打断时。

☆ 在中断服务程序的保护和恢复现场之前。

(3)中断屏蔽

中断源发出中断请求之后,这个中断请求并不一定能真正送到 CPU 中去,在有些情况下,可以用程序方式有选择地封锁部分中断,这就是中断屏蔽。通常给每个中断源都相应地配备一个中断屏蔽触发器 MASK,则每个中断请求信号在送往判优电路之前,还要受到屏蔽触发器的控制。当MASK=1,表示对应中断源的请求被屏蔽(封锁其中断源的请求),可见中断请求触发器和中断屏蔽触发器是成对出现的,只有当 INTR=1(中断源有中断请求),MASK=0(该级中断未被屏蔽),才允许对应的中断请求送往 CPU。中断屏蔽字是描述中断屏蔽状态的一组二进制信息。例如,有 Ln-1~L0级中断,中断屏蔽字为 Mn-1Mn-2…M0,设中断响应的优先级从高到低为 Ln-1→L0,若要使中断 Li(n-1≤i≤0)最先响应,在执行 Li中断服务程序中将中断屏蔽寄存器中的第 n-1~i-1 位置为 1,第 i 位及其他位设置为 0,即屏蔽掉比Li优先级更高的中断,开启较之 Li低的中断,从而使中断Li最先响应。

【例 11.1】某计算机的中断系统有 4 个中断源,每个中断源对应一个屏蔽码,中断响应的优先次序为 1、2、3、4。回答以下问题:

(1)要使中断处理次序为 1、2、3、4,设置相应的中断屏蔽码。

(2)要使中断处理次序为 2、1、4、3,设置相应的中断屏蔽码。

(3)在(2)的基础上,当中断请求 1、2、4 同时到达时,画出相应的中断处理过程,即 CPU 的运动轨迹。

(4)在(2)的基础上,当中断请求 3、1、2 依次到达时,画出相应的中断处理过程,即 CPU 的运动轨迹。

解:(1)中断的处理次序和中断响应次序一致,对于第 2 级程序中断,它要屏蔽第 3、4 级中断,但要开放第 1 级中断,所以其屏蔽码设为 0111。中断屏蔽码的设置如表 11.1所示。

(2)一般地,当多个中断请求同时出现时,中断处理次序与响应次序一致,当中断请求先后出现时,允许级别高的中断请求打断优先级别低的中断服务程序,实现中断嵌套。在不改变中断响应次序的条件下,可以通过改变屏蔽码来改变中断处理过程。若要使中断处理次序为 2、1、4、3,对于第 1 级中断,它要屏蔽第 3、4 级中断,但要开放第 2 级中断,所以其屏蔽码设为 1011。中断屏蔽码的设置如表 11.2 所示。

表 11.1 程序优先级与屏蔽码(1)

表 11.2 程序优先级与屏蔽码(2)

《计算机组成原理》— 输入输出系统_第7张图片

 

(3)在(2)的基础上,当中断 1、2、4 同时到达时,1 级中断优先级最高,最先响应,但其屏蔽码对 2 级中断是开放的,所以当 1 级的中断服务程序执行到开中断指令后,立即被 2 级中断请求打断,CPU 转去执行2 级的中断服务程序,待执行完毕后再返回继续执行1 级的中断服务程序;1 级的中断服务程序执行完毕后,返回到主程序,此时才允许响应 4级中断;4 级的中断服务程序执行完毕后,返回到主程序。CPU 的运动轨迹如图 11.7 所示。

(4)在(2)的基础上,当中断请求 3、1、2 依次到达时,3 级中断先到,执行中断处理程序,在执行过程中 1 级中断请求到达,由于 3 级中断的屏蔽码对 1 级中断是开放的,所以当 3 级的中断服务程序执行到开中断指令后,立即被 1 级中断请求打断,CPU 转去执行1 级的中断服务程序,在 1 级中断处理程序执行过程中,2 级中断到达,由于1 级中断的屏蔽码对 2 级中断是开放的,所以当 1 级的中断服务程序执行到开中断指令后,立即被 2级中断请求打断,CPU 转去执行 2 级的中断服务程序,完毕后再返回继续执行 1 级的中断服务程序,1 级的中断服务程序执行完毕,再接着执行 3 级的中断服务程序,完毕后返回到主程序。CPU 的运动轨迹如图 11.8 所示。

 《计算机组成原理》— 输入输出系统_第8张图片

 

3.DMA 方式

1)DMA 方式的特点

无论程序查询还是程序中断方式,主要的工作都是由 CPU 执行程序完成的,这需要花费时间,因此不能实现高速 I/O 设备与主机的信息交换。

DMA 方式是在 I/O 设备和主存储器之间开辟一条“直接数据通道”,在不需要 CPU 干预也不需要软件介入的情况下在两者之间进行的高速数据传送方式。

DMA方式具有下列特点:

☆ 使主存与 CPU 的固定联系脱钩,主存既可被 CPU 访问,又可被 I/O 设备访问。

☆ 在数据块传送时,主存地址的确定、传送数据的计数等都用硬件电路直接实现。

☆ 主存中要开辟专用缓冲区,及时供给和接收 I/O 设备的数据。

☆ DMA 传送速度快,CPU 和 I/O设备并行工作,提高了系统的效率。

☆ DMA 在开始前和结束后要通过程序和中断方式进行预处理和后处理。

2)DMA 方式和中断方式的区别

DMA方式和中断方式的重要区别如下:

☆ 中断方式是程序切换,需要保护和恢复现场;而 DMA 方式除了开始和结尾,其他时候不占用 CPU 的任何资源。

☆ 对中断请求的响应只能发生在每条指令执行完毕时(即指令的执行周期之后);而对 DMA 请求的响应可以发生在每个机器周期结束时(在取指周期、间址周期、执行周期之后均可)。

☆ 中断传送过程需要 CPU 的干预;而 DMA 传送过程不需要 CPU 的干预,故数据传送速率非常高,适合于高速 I/O 设备的大批数据传送。

☆ DMA 请求的优先级高于中断请求。

☆ 中断方式具有对异常事件的处理能力;而 DMA 方式仅局限于完成传送信息块的 I/O操作。

3)DMA 控制器

在 DMA 传送方式中,对数据传送过程进行控制的硬件称为 DMA 控制器(也称为 DMA接口)。当 I/O 设备需要进行数据传送时,通过 DMA 控制器向 CPU 提出 DMA 传送请求,

CPU响应之后将让出系统总线,由 DMA 控制器接管总线进行数据传送。

DMA 控制器主要由以下几个部分组成:

☆ 主存地址计数器。用来存放主存中要交换数据的地址,初值为主存缓冲区的首地址。当 DMA 传送数据时,每传送一个数据,地址计数器加 1,从而以增量方式给出主存中要交换的一批数据的地址,直到这批数据传送完毕为止。

☆ 传送长度计数器。用来记录传送数据块的长度,初值为传送数据块的总字数或总字节数,每传送一个字或一个字节,计数器自动减 1,当其内容为 0 时表示数据块已全部传送完毕。

☆ 数据缓冲寄存器。用来暂存每次传送的数据。输入时,数据由 I/O 设备(如磁盘)先送往数据缓冲寄存器,再通过数据总线送到主存。输出时,数据由主存通过数据总线送到数据缓冲寄存器,然后送到 I/O 设备。

☆ DMA 请求触发器。每当 I/O 设备准备好数据后给出一个控制信号,使 DMA 请求触发器置位。

☆ 控制/状态逻辑。它由控制和时序电路及状态标志组成,用于指定传送方向,修改传送参数,并对DMA 请求信号和 CPU 响应信号进行协调和同步。

☆ 中断机构。当一个数据块传送完毕后触发中断机构,向 CPU 提出中断请求,CPU将进行DMA 传送的结尾工作。

在 DMA 传送过程中,DMA 控制器将接管 CPU 的地址总线、数据总线和控制总线,CPU 的主存控制信号被禁止使用。而当 DMA 传送结束后,将恢复 CPU 的一切权利并开始执行其操作。由此可见,DMA 控制器必须具有控制系统总线的能力,即能够像 CPU 一样输出地址信号、接收或发出控制信号、输入或输出数据信号。

4)DMA 传送方法

主存和 DMA 控制器之间有一条数据通路,因此主存和 I/O 设备之间交换信息时,不通过 CPU。但当 I/O 设备和 CPU 同时访问主存时,可能发生冲突,为了有效地使用主存,DMA控制器与 CPU 通常采用以下三种方法使用主存。

☆ CPU 停止访问主存法:用 DMA 请求信号迫使 CPU 让出总线控制权。每次 DMA 请求获得批准后,DMA 控制器获得总线控制权以后,连续占用若干个存取周期(总

线周期)进行成组连续的数据传送,直至批量传送结束,DMA 控制器才把总线控

制权交回 CPU。在 DMA 操作期间,CPU 处于保持状态,停止访问主存,仅能进行一些与总线无关的内部操作。这种方法只适用于高速 I/O 设备的成组传送。

☆ 存储器分时法:把原来的一个存取周期分成两个时间片,一片给 CPU,另一片给DMA,使 CPU 和 DMA 交替地访问主存。

☆ 周期挪用法:是前两种方法的折衷方法。一旦 I/O 设备有 DMA 请求并获得CPU 批准后,CPU 让出一个周期的总线控制权,由 DMA 控制器控制系统总线,挪用一个存取周期进行一次数据传送,传送一个字节或一个字,然后,DMA 控制器将总线控制权交回 CPU,CPU继续进行自己的操作,等待下一个 DMA 请求的到来;重复上述过程,直至数据块传送完毕。

5)DMA 传送过程

DMA的传送过程分为以下三个阶段。

☆ DMA 预处理:这是在 DMA 传送之前进行的一些必要的准备工作,是由 CPU 来完成的。CPU 首先执行几条I/O 指令,用于测试 I/O 设备的状态、向 DMA 控制器的有关寄存器置初值、设置传送方向、启动该 I/O 设备等。在这些工作完成之后,CPU继续执行原来的程序,在 I/O 设备准备好发送的数据(输入时)或接收的数据已处理完毕(输出时),I/O 设备向 DMA 控制器发送 DMA 请求,再由DMA 控制器向CPU 发送总线请求,以获得数据总线的控制权。

☆ 数据传送。DMA 的数据传送可以是以单字节(或字)为基本单位,也可以以数据块为基本单位。对于以数据块为单位的传送,DMA 占用总线后的数据输入和输出操作都是通过循环来实现的。需要特别指出的是,这一循环不是由 CPU 执行程序实现的,而是由 DMA 控制器实现。

☆ DMA 后处理。当长度计数器计为 0 时,DMA 操作结束,DMA 控制器向CPU 发出中断请求,CPU 停止原来程序的执行,转去执行中断服务程序做 DMA 结束处理工作。细化的 DMA 传送过程如图 11.9 所示。

 《计算机组成原理》— 输入输出系统_第9张图片

 

【例 11.2】CPU 时钟频率为50MHz,磁盘数据传输率为 2MB/s。采用 DMA 控制方式。假设 DMA 的启动操作需要 1000 个时钟周期,DMA 控制结束后处理中断也需要 1000 个时钟周期。如果 DMA 平均传输的数据长度为 4KB,求 DMA 操作所花费的时间比率。

解:DMA 启动及中断处理所花费时间为(1000+1000)/(50MHz)=0.04ms。每次 DMA 操作传输时间=4KB/(2MB/s)=2ms,则 DMA 操作所花费的时间比率=0.04ms/(2ms)=2%。

4. 通道方式

1)通道的基本概念

通道是指专门用于负责输入/输出工作的处理器,它独立于 CPU,有自己的指令系统。该指令系统比较简单,一般只有数据传送指令、设备控制指令等。通道所执行的程序称为通道程序。

主机可以接若干个通道,一个通道可以接若干个设备控制器,一个设备控制器又可以接一台或多台 I/O 设备。从逻辑结构上讲,通道方式具有 4 级连接:主机→通道→设备控制

器→I/O 设备。

2)通道的类型

根据信息交换方式的不同,可以将通道分成以下几种类型。

☆ 字节多路通道。按字节交换方式工作。它通常都含有若干个非分配型子通道,每个子通道连接一台 I/O 设备,这些子通道按时间片轮转方式共享主通道,当一个子通道控制其 I/O 设备交换完一个字节后,立即让出字节多路通道(主通道),以便让另一个子通道使用。如图 11.10(a)所示,先选择设备 A,为其传送一个字节 A1,然后选择设备 B,为其传送一个字节 B1,再选择设备 C,为其传送一个字节C1。接着再交叉地传送 A2、B2、C2 等。字节多路通道一般用于连接中、低速 I/O 设备。一个字节多路通道可以连接多台中、低速设备。字节多路通道的实际流量是连接该通道上的所有设备的数据传输率之和,若连接 n 台设备,则实际流量为:

☆ 数组选择通道(或选择通道):以成组方式进行数据传输,即每次传输一批数据,传输的速率很高。数组选择通道只含有一个分配型子通道,在一段时间内只能执行一个通道程序,控制一台设备进行数据传送,当一个 I/O 请求操作完成后,再选择与通道相连的另一台设备。这样当某台设备占用了该通道时,便一直由它独占,直至该设备传送完毕释放该通道为止。如图 11.10(b)所示,数组选择通道先选择设备 A,成组连续传送 A1、A2…,当设备 A 传送完毕,然后选择设备 B,成组连续传送 B1、B2…,再选择设备 C,成组连续传送 C1、C2…。由此可见,这种通道的利用率很低,一般用于连接高速 I/O 设备。数组选择通道的实际流量是连接该通道上的所有设备的数据传输率最高者,若连接n 台设备,则实际流量为:

☆ 数组多路通道。它结合了数组选择通道传输速度高和字节多路通道能进行分时并行操作的优点,这使得它既具有很高的数据传送速率,又能获得满意的通道利用率。数组多路通道以分时的方式执行几个通道程序,每执行一个通道程序的一条通道指令控制传送一组数据后,就转向另一个通道程序。这种通道广泛用于连接高、中速I/O 设备。数组多路通道的实际流量是连接该通道上的所有设备的数据传输率最高者,若连接n 台设备,则实际流量为:

《计算机组成原理》— 输入输出系统_第10张图片

 

如果在 I/O 系统中有多个通道,各个通道是并行工作的,则 I/O 系统的极限流量是各通道工作时的极限流量之和。

3)通道控制方式与 DMA 方式的区别

通道控制方式是 DMA 方式的进一步发展,实质上,通道也是实现 I/O 设备和主存之间直接交换数据的控制器。两者的主要区别在于:

☆ DMA 控制器是通过专门设计的硬件控制逻辑来实现对数据传送的控制;而通道则是一个具有特殊功能的处理器,它具有自己的指令和程序,通过执行一个通道程序实现对数据传送的控制,故通道具有更强的独立处理数据输入/输出的功能。

☆ DMA 控制器通常只能控制一台或少数几台同类设备;而一个通道则可以同时控制许多台同类或不同类的设备。

4)通道的工作过程

通道完成一次数据传送的过程如图 11.11 所示,主要步骤如下:

01在用户程序中使用访管指令进入操作系统管理程序,由 CPU 通过管理程序组织一个通道程序,并使用 I/O 指令启动通道(此后 CPU 并行运行应用程序)。

02通道并行执行 CPU 为它组织的通道程序,完成指定的数据输入输出工作。

03通道程序结束后向 CPU 发出中断请求。CPU 响应这个中断请求后,第二次调用管理程序对中断请求进行处理。

这样,每完成一次输入输出工作,CPU 只需要调用两次管理程序,大大减少了对用户程序的打扰。

在采用通道结构的系统中,也需要使用I/O指令,但这种I/O指令比较简单,它并不直接控制具体的I/O操作,只是负责通道的启动和停止、查询通道或设备

的状态,从而控制通道去完成I/O操作。

 《计算机组成原理》— 输入输出系统_第11张图片

 

【例 11.3】一台计算机连接三台 I/O 设备:一台磁盘机的数据传输率为 1000KB/s,一台磁带机的数据传输率为 300KB/s,一台打印机的数据传输率为 10KB/s。回答以下问题:

(1)若采用字节多路通道类型,则通道的数据传输速率至少应为多少?

(2)若采用数组选择通道类型,则通道的数据传输速率至少应为多少?

解:(1)采用字节多路通道类型时,三台设备从宏观上看同时享用通道,通道的数据传输速率至少等于3 台设备的数据传输速率之和,即通道的数据传输速率≥1000+300+10=1310KB/s。

(2)采用数组选择通道类型时,三台设备分时共享通道。通道的数据传输速率至少等于3 台设备中的最高数据传输速率,即通道的数据传输速率≥MAX(1000,300,10)=1000KB/s。

你可能感兴趣的:(《计算机组成原理》— 输入输出系统)