Skip to content

第 7 章 输入/输出系统

I/O 接口

I/O 接口(也称 I/O 控制器)是主机和外设之间的交接界面,通过接口可以实现主机和外设之间的信息交换

I/O 接口的功能

  1. 进行地址译码和设备选择。CPU 送来选择外设的地址码后,接口必须对地址进行译码以 产生设备选择信息,使主机能和指定外设交换信息。

  2. 实现主机和外设的通信联络控制。解决主机与外设时序配合问题,协调不同 工作速度的 外设和主机之间交换信息,以保证整个计算机系统能统一、协调地工作。

  3. 实现数据缓冲。CPU 与外设之间的速度往往不匹配,为消除速度差异,接口必须设置数 据缓冲寄存器,用于数据的暂存,以避免因速度不 一致而丢失数据。

  4. 信号格式的转换。外设与主机两者的电平、数据格式都可能存在差异,接口应提供主机与外设的信号格式的转换功能,如电平转换、并/串或串/并转换、模/数或数/模转换等。

  5. 传送控制命令和状态信息。CPU 要启动某外设时,通过接口中的命令寄存器向外设发出启动命令;外设准备就绪时,则将“准备好”状态信息送回接口中的状态寄存器,并反馈给 CPU。外设向 CPU 提出中断请求时,CPU 也应有相应的响应信号反馈给外设

I/O 接口的基本结构

I/O 端口与 CPU 交换的内容

I/O 接口在主机侧通过 1/O 总线与内存、CPU 相连。数据缓冲寄存器用来暂存与 CPU 或内存之间传送的数据信息,状态寄存器用来记录接口和设备的状态信息,控制寄存器用来保存 CPU 对外设的控制信息。状态寄存器和控制寄存器在传送方向上是相反的,在访问时间上也是错开的,因此可将它们合二为 一 alt text

I/O 接口的数据线上传输的内容

I/O 接口中的数据线传送的是读/写数据、状态信息、控制信息和中断类型号。地址线传送的是要访问 I/O 接口中的寄存器的地址。控制线传送的是读/ 写控制信号,以确认是读寄存器还是写寄存器,此外控制线还会传送中断请求和响应信号、仲裁信号和握手信号

数据缓冲寄存器、状态/控制寄存器的访问操作是通过相应的指令来完成的,通常称这类指 令为 I/O 指令,I/O 指令只能在操作系统内核的底层 I/O 软件中使用,它们是一种特权指令。

I/O 接口的类型

从不同的角度看,I/O 接口可以分为不同的类型。

  1. 按数据传送方式(外设和接口 一侧),可分 并行接口(一字节或 一个字的所有位同时传 送)和串行接口(一位 一位地有序传送),接口要完成数据格式的转换。

  2. 按主机访问 I/ O 设备的控制方式,可分为程序查询接口、中断接口和 DMA 接口等。

  3. 按功能选择的灵活性,可分为可编程接口(通过编程改变接口功能)和不可编程接口。

I/O 端口及其编址

I/O 端口是指 I/0 接口电路中可被 CPU 直接访问的寄存器,主要有数据端口、状态端口和控 制端口。

端口和接口是两个不同的概念,端口是指接口电路中可以进行读/写的寄存器。

I/O 端口要想能够被 CPU 访问,就必须要对各个端口进行编址,每个端口对应一个端口地址。而对 I/O 端口的编址方式有与存储器独立编址和统一编址两种。

  1. 独立编址

独立编址也称 I/O 映射方式,是指对所有的 I/O 端口单独进行编址。I/O 端口的地址空间与主存地址空间是两个独立的地址空间,它们的范围可以重叠,相同地址可能属于不同的地址空间。因此需设置专门的 I/O 指令来表明访问的是 I/O 地址空间,I/O 指令的地址码给出 1/O 端口号。

  1. 统一编址

统一编址也称存储器映射方式,是指把主存地址空间分出一部分给 I/O 端口进行编址,I/0 端口和主存单元在同一地址空间的不同分段中,根据地址范围就能区分访问的是 I/O 端口还是主存单元,因此无须设置专门的 I/O 指令,用统一的访存指令就可访问 1/O 端口。

I/O 方式

输入/输出系统实现主机与 I/O 设备之间的数据传送,可以采用不同的控制方式,各种方式在代价、性能、解决间题的着重点等方面各不相同,常用的 I/0 方式有程序查询、程序中断和 DMA 等,其中前两种方式更依赖于 CPU 中程序指令的执行

程序查询方式

程序查询方式的工作流程如下:

  1. CPU 执行初始化程序,并预置传送参数。

  2. 向 I/ O 接又发出命令字,启动 I O 设备。

  3. 从外设接又读取其状态信息。

  4. CPU 周期或持续的查询设备状态,直到外设准备就绪。

  5. 传 送 一次 数 据 。

  6. 修改地址和计数器参数。

  7. 判断传送是否结束,若未结束转第 3 步,直到计数器为 0。

alt text

根据上述流程 4 中查询方式的不同,程序查询方式可分为如下两类。

  1. 独占查询。一旦设备被启动,CPU 就一直持续查询接又状态,CPU 花费 100%的时间用 于 1/O 操作,此时外设和 CPU 完全串行工作。

  2. 定时查询。CPU 周期性地查询接又状态,每次总是等到条件满足才进行一个数据的传送, 传送完成后返回到用户程序。定时查询的时间间隔与设备的数据传输速率有关

程序中断方式

  1. 程序中断的基本概念

程序中断方式的思想:CPU 在程序中安排好在某个时机启动某台外设 ,然后 CPU 继续执行当前的程序,不需要像查询方式那样一直等待外设准备就绪。一旦外设完成数据传送的准备工作,就主动向 CPU 发出中断请求。在可以响应中断的条件下,CPU 暂时中止正在执行的程序,转去执行中断服务程序为外设服务,在中断服务程序中完成一次主机与外设之间的数据传送,传送完成后,CPU 返回原来的程序。

  1. 程序中断的工作流程

(1)中断请求

中断源是请求 CPU 中断的设备或事件,一台计算机允许有多个中断源。每个中断源向 CPU 发出中断请求的时间是随机的。为记录中断事件并区分不同的中断源,中断系统需对每个中断源 设置中断请求标记触发器,当其状态为“ 1” 时,表示该中断源有请求。这些触发器可组成中断 请求标记寄存器,该寄存器可集中在 CPU 中,也可分散在各个中断源中。

通过 INTR 线发出的是可屏蔽中断,通过 NMI 线发出的是不可屏蔽中断

(2)中断响应判优

中断响应优先级是指 CPU 响应中断请求的先后顺序

不可屏蔽中断>内部异常>可屏蔽中断

在内部异常中,硬件故障>软件中断

DMA 中断请求>I/0 设备的中断请求

在 1/O 传送类中断请求中,高速设备>低速设备; 输入设备>输出设备; 实时设备 >普通设备 。

(3)CPU 响应中断的条件

CPU 响应中断必须满足以下 3 个条件:

1、中断源有中断请求。

2、CPU 允许中断及开中断 (异常和不可屏蔽中断不受此限制)。

3、一条指令执行完毕 (异常不受此限制),且没有更紧迫的任务。

(4)中断响应的过程

CPU 响应中断后,经过某些操作,转去执行中断服务程序。这些操作是由硬件直接实现的, 我们将它称为中断隐損令。中断隐指令并不是指令系统中的一条真正的指令,只是一种虚拟的说法,本质上是硬件的一系列自动操作。它所完成的操作如下:

1、关中断。CPU 响应中断后,首先要保护程序的断点和现场信息,在保护断点和现场的过程中,CPU 不能响应更高级中断源的中断请求。否则,若断点或现场保存不完整,在中断服务程序结束后,就不能正确地恢复并继续执行现行程序。

2、保存断点。为保证在中断服务程序执行完后能正确地返回到原来的程序,必须将原程序的断点(指令无法直接读取的 PC 和 PSW 的内容对程序员透明)保存在找或特定寄存器中。注意异常和中断的差是:异常指令通常并没有执行成功,异常处理后要重新执行,所以其断点通常是当前指令的地址。中断的断点则是下一条指令的地址。

3、引出中断服务程序。识别中断源,将对应的服务程序入又地址送入程序计数器 PC。有两种方法识别中断源:硬件向量法和软件查询法。本节主要讨论比较常用的向量中断。

(5)中断向量

中断识别分为向量中断和非向量中断两种。非向量中断即软件查询法

中断识别分为向量中断和非向量中断两种。非向量中断即软件查询法,第 5 章已介绍。 每个中断源都有 一个唯 一的类型号,每个中断类型号都对应 一个中断服务程序,每个中断服 务程序都有一个入又地址,即中断向量,CPU 必须找到入又地址。把系统中的全部中断向量集中 存放到存储器的某个区域内,这个存放中断向量的存储区就称为中断向量表。

CPU 响应中断后,通过识别中断源获得中断类型号,然后据此计算出对应中断向量的地址: 再根据该地址从中断向量表中取出中断服务程序的入又地址,并送入程序计数器 PC,以转去执行中断服务程序,这种方法被称为中断向量法,采用中断向量法的中断被称为向量中断。

(6)中断处理过程

所示为一个可嵌套中断的典型处理流程

alt text

中断处理流程如下:

中断处理流程如下: 1️⃣ 关中断。

2️⃣ 保存断点。

3️⃣ 中断服务程序寻址。

4️⃣ 保存现场和屏蔽字。进入中断服务程序后首先要保存现场和中断屏蔽字,现场信息是指用户可见的工作寄存器的内容,它存放程序执行到断点处的现行值。

现场和断点,这两类信息都不能被中断服务程序破坏。由于现场信息用指令可直接访问, 因此通常在中断服务程序中通过指令把它们保存到栈中,即由软件实现 。而断点信息由 CPU 在中断响应时自动保存到栈或指定的寄存器中,即由硬件实现。

5️⃣ 开中断。允许更高级中断请求得到响应,以实现中断嵌套。

6️⃣ 执 行中断服 务程序。这是中断请求的目的。

7️⃣ 关中断。保证在恢复现场和屏蔽字时不被中断。

8️⃣ 恢复现场和屏蔽字。将现场和屏蔽字恢复到原来的状态。

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

1~3 由中断隐指令(硬件自动)完成: 4~ 9 由中断服务程序完成。

  1. 多重中断和中断屏蔽技术

DMA 方式

DMA 方式是一种完全由硬件进行成组信息传送的控制方式,它具有程序中断方式的优点,即在数据准备阶段,CPU 与外设并行工作。DMA 方式在外设与内存之间开辟了一条“真接数据通路”,信息传送不再经过 CPU,降低了 CPU 在传送数据时的开销,因此称为直接存储器存取方式。由于数据传送不经过 CPU,因此不需要保护、恢复 CPU 现场等烦琐操作。

  1. DMA 方式的特点

  2. DMA 控制器的组成

alt text

  1. DMA 的传送方式

(1)停止 CPU 访存

当 I/O 设备有 DMA 请求时,由 DMA 接又向 CPU 发送一个停止信号,使 CPU 放弃总线控制权,停止访问主存,直到 DMA 传送一块数据结束

(2)周期挪用

由于 I/0 访存的优先级高于 CPU 访存(I/0 不立即访存就可能丢失数据),因此由 I/O 设备挪用一个存取周期,传送完一个数据字后立即释放总线

(3)DMA 与 CPU 交替访问

将 CPU 的工作周期分成两个时间片,一个给 CPU 访存,另一个给 DMA 访存,这样在每个 CPU 周期内,CPU 和 DMA 就都可以轮流访存

alt text

按照时钟周期数理解的话,一秒 DMA 传送需要的周期数比一秒计算机主频振动次数就是这个百分比了 这里 1 秒可充满 40000 次 所以需要 40000 次预处理和后处理 再比上一秒计算机主频 即为占比

  1. DMA 的传送过程

DMA 的数据传送氛围预处理、数据传送和后处理 3 个阶段。

alt text

(1)预处理

由 CPU 完成一些必要的准备工作。首先,初始化 DMA 控制器中的有关寄存器、设置传送方向、测试并启动设备等。然后,CPU 继续执行原程序,直到 I/O 设备准备好发送的数据(输入情况)或接收的数据(输出情况)时,I/O 设备向 DMA 控制器发送 DMA 请求,再由 DMA 控制器向 CPU 发出总线请求(这两个过程也可统称 DMA 请求),用以传输数据

(2)数据传送

DMA 以数据块为基本传送单位。DMA 占用总线后的数据输入/输出操作都是通过循环来实现的,这一循环也是由 DMA 控制器实现的,即数据传送阶段完全由 DMA(硬件)控制。

(3)后处理

DMA 控制器向 CPU 发送中断请求,CPU 执行中断服务程序做 DMA 结束处理,包括校验数据(出错则转诊断程序)等后处理工作。

  1. DMA 方式和中断方式的区别

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

1、中断方式是程序的切换,需要保护和恢复现场:而 DMA 方式不中断现行程序,无需保护现场,除了预处理和后处理,其他时候不占用任何 CPU 资源。

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

3、中断传送过程需要 CPU 的干预;而 DMA 传送过程不需要 CPU 的干预,因此数据传输速率非常高,适合于高速外设的成组数据传送。

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

5、中断方式具有处理异常事件的能力,而 DMA 方式仅局限于大批数据的传送。

6、从数据传送来看,中断方式靠程序传送,DMA 方式靠硬件传送。

如有转载或 CV 的请标注本站原文地址