IO方式

2022.08.23

程序查询方式

摘要

(省时间看这个总结+最后一个例题)重点:

  1. CPU一旦启动I/O,必须停止现行程序的运行,并在现行程序中插入一段程序。
  2. 主要特点:CPU有“踏步”等待现象,CPU与I/O串行工作。
  3. 优点:接口设计简单、设备量少
  4. 缺点:CPU在信息传送过程中要花费很多时间用于查询和等待,而且如果采用独占查询, 则在一段时间内只能和一台外设交换信息,效率大大降低
  5. 独占查询:CPU 100%的时间都在查询I/O状态,完全串行
  6. 定时查询:在保证数据不丢失的情况下,每隔一段时间CPU就查询一次I/O状态。查询的 间隔内CPU可以执行其他程序

image-20220822163030197

image-20220822164408017

程序查询方式又称为程序控制 I/O 方式。在这种方式中,数据在 CPU 和外围设备之间 的传送完全靠计算机程序控制,是在 CPU 主动控制下进行的。当需要输入/输出时,CPU 暂停执行主程序,转去执行设备输入/输出的服务程序,根据服务程序中的 I/O 指令进行数 据传送。这是一种最简单、最经济的输入/输出方式,只需要很少的硬件。

输入/输出指令

当用程序实现输入/输出传送时,I/O 指令一般具有如下功能:

  1. 置“1”或置“0”,I/O 接口的某些控制触发器,用于控制设备进行某些动作,如启动、关闭设备等。
  2. 测试设备的某些状态,如“忙”“准备就绪”等,以便决定下一步的操作。
  3. 传送数据,当输入数据时,将 I/O 接口中数据寄存器的内容送到 CPU 某一寄存器;当输出数据时,将 CPU 中某一寄存器的内容送到 I/O 接口的数据寄存器。

程序查询方式的接口

图中用1~6表示了 CPU 从外设输入一个字的过程。

image-20220822204140555

  1. 设备选择电路 接到总线上的每个设备预先都给定了设备地址码。CPU 执行 I/O 指 令时需要把指令中的设备地址送到地址总线上,用以指示 CPU 要选择的设备。每个设备接 口电路都包含一个设备选择电路,用它判别地址总线上呼叫的设备是不是本设备。如果是, 本设备就进入工作状态,否则不予理睬。设备选择电路实际上是设备地址的译码器
  2. 数据缓冲寄存器 当输入操作时,用数据缓冲寄存器来存放从外部设备读出的数据,然后送往 CPU;当输出操作时,用数据缓冲寄存器来存放 CPU 送来的数据,以便送给外部设备输出。
  3. 设备状态标志 是接口中的标志触发器,如“忙”“准备就绪”“错误”等,用来标志设备的工作状态,以便接口对外设动作进行监视。一旦 CPU 用程序询问外部设备时,将状态标志信息取至 CPU 进行分析。

程序查询输入/输出方式

image-20220822205624234

案例:在程序查询方式的输入/输出系统中,假设不考虑处理时间,每一个查询操作需要100个时钟周期CPu的时钟频率为50MHz。现有鼠标和硬盘两个设备,而且CPU必须每秒对鼠标进行30次查询,硬盘以32位字长为单位传输数据,即每32位被CPU查询一次(这就是程序查询方式),传输率2×220B/s。求CPU对这两个设备查询所花费的时间比率,由此可得出什么结论?

例题

程序中断方式

摘要

image-20220822163057742

程序中断的基本概念

  1. 中断技术的功能

    ①并性工作:实现 CPU 与IO 设备的并行工作。 ②处理错误:处理硬件故障和软件错误。 ③人机交互:实现人机交互,用户干预机器需要用到中断系统。 ④多道程序:实现多道程序、分时操作,多道程序的切换需借助于中断系统。 ⑤快速响应:实时处理需要借助中断系统来实现快速响应。 ⑥软中断:实现应用程序和操作系统(管态程序)的切换,称为“软中断”。 ⑦处理器间交流:多处理器系统中各处理器之间的信息交流和任务切换。

  2. 程序中断方式的思想

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

    摘要:

    CPU找外设,外设忙CPU就得一直等着。现在CPU通知外设一声,外设好了来找CPU。

  3. 程序中断流程

    1. 中断请求

      1. 中断源是请求 CPU 中断的设备或事件,一台计算机允许有多个中断源。每个中断源向 CPU 发出中断请求的时间是随机的。
      2. 为记录中断事件并区分不同的中断源,中断系统需对每个中断源设置中断请求标记触发器,当其状态为 “1”时,表示中断源有请求。这些触发器可组成中断请求标记寄存器,该寄存器可集中在CPU 中,也可分散在各个中断源中。
      3. 通过 INTR 线发出的是可屏蔽中断,通过 NMI 线发出的是不可屏蔽中断。可屏蔽中断的优先级最低,在关中断模式下不会被响应。不可屏蔽中断用于处理紧急和重要的事件,如时钟中断、电源掉电等,其优先级最高,其次是内部异常,即使在关中断模式下也会被响应。
    2. 中断响应判优

      1. 中断响应优先级是指 CPU 响应中断请求的先后顺序。由于许多中断源提出中断请求的时间都是随机的,因此当多个中断源同时提出请求时,需通过中断判优逻辑来确定响应哪个中断源的请求。

      2. 中断响应的判优通常是通过硬件排队器实现的。

      3. 一般决说,

        1. 不可屏蔽中断 > 内部异常 >可屏蔽中断
        2. 内部异常中,硬件故障 >软件中断
        3. DMA 中断请求优先于 I/O 设备传送的中断请求
        4. 在 I/0 传送类中断请求中,高速设备优先于底速设备,输入设备优先于输出设备,实时设备优先于普通设备。
      4. 中断优先级包括响应优先级处理优先级,响应优先级在硬件线路上是固定的,不便改动,处理优先级可利用中断屏蔽技术动态调整,以实现多重中断,具体在后文中介绍。

    3. CPU 响应中断的条件

      1. CPU 在满足一定的条件下响应中断源发出的中断请求,并经过一些特定的操作,转去执行中断服务程序。CPU 响应中断必须满足以下 3个条件:

        • 中断源有中断请求。
        • CPU 允许中断及开中断(异常和不可屏蔽中断不受此限制)。
        • 一条指令执行完毕(异常不受此限制),且没有更紧迫的任务。
      2. 注意:I/O 设备的就绪时间是随机的,而 CPU 在统一的时刻即每条指令执行阶段结束前向接口发出中断查询信号,以获取 I/O 的中断请求,也就是说,CPU 响应中断的时间是在每条指令执行阶段的结束时刻。这里说的中断仅指I/O中断,内部异常不属于此类情况。

    4. 中断响应过程

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

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

      2. 保存断点。为保证在中断服务程序执行完后能正确地返回到原来的程序,必须将原程序的断点(指令无法直接读取的PC 和PSW 的内容)保存在栈或特定奇存器中。

        注意异常和中断的差异异常指令通常并没有执行成功,异常处理后要重新执行,所以其断点是当前指令的地址。中断的断点则是下一条指令的地址

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

    5. 中断向量

      1. 中断识别分为向量中断非向量中断两种。非向量中断即软件查询法,第5章已介绍。
      2. 每个中断都有一个唯一的(中断)类型号,每个中断类型号都对应一个中断服务程序,每个中断服务程序都有一个入口地址,CPU 必须找到入口地址,即中断向量。把系统中的全部中断向量集中存放到存储器的某个区域内,这个存放中断向量的存储区就称为中断向量表
      3. CPU 响应中断后,通过识别中断源获得中断类型号,然后据此计算出对应中断向量的地址:再根据该地址从中断向量表中取出中断服务程序的入口地址,并送入程序计数器 PC,以转而执行中断服务程序,这种方法被称为中断向量法,采用中断向量法的中断被称为向量中断。
    6. 中断处理过程 不同计算机的中断处理过程各具特色,就其多数而论,中断处理流程如图所示。 中断处理流程如下:

      1. 关中断。

      2. 保存断点。

      3. 中断服务程序寻址。

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

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

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

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

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

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

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

      其中,①~③由中断隐指令(硬件自动)完成;④~⑨由中断服务程序完成。

      image-20220823104515732

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

      若 CPU 在执行中断服务程序的过程中,又出现了新的更高优先级的中断请求,而 CPU 对新的中断请求不予响应,则这种中断称为单重中断。若 CPU 暂停现行的中断服务程序,转去处理新的中断请求,则这种中断称为多重中断,又称中断联套。

      CPU 要具备多重中断的功能,必须满足下列条件:

      1. 在中断服务程序中提前设置开中断指令。
      2. 优先级别高的中断源有权中断优先级别低的中断源。

      中断处理优先级是指多重中断的实际优先级处理次序,可以利用中断屏蔽技术动态调整,从而可以灵活地调整中断服务程序的优先级,使中断处理更加灵活。如果不使用中断屏蔽技术,则处理优先级和响应优先级相同。现代计算机一般使用中断屏蔽技术,每个中断源都有一个屏蔽触发器,1表示屏蔽该中断源的请求,0表示可以正常申请,所有屏蔽触发器组合在一起便构成一个屏蔽字寄存器,屏蔽字寄存器的内容称为屏蔽字。

      关于中断屏蔽字的设置及多重中断程序执行的轨迹,下面通过实例说明。

    8. 例子

      设某机有4个中断源A、B、C、D,其硬件排队优先次序为 A>B>C>D,现要求将中断处理次序改为D>A>C>B。 1)写出每个中断源对应的屏蔽字。 2)按图所示的时间轴给出的4 个中断源的请求时刻,画出 CPU 执行程序的轨迹。设每个中断源的中断服务程序时间均为 20us。

      image-20220823113410184

      中断源屏蔽字A屏蔽字B屏蔽字C屏蔽字D
      A1110
      B0100
      C0110
      D1111

      截屏2022-08-23 上午11.37.09

例题

DMA方式

概述

image-20220822163117394

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

由于数据传送不经过 CPU,也就不需要保护、恢复 CPU 现场等烦琐操作。这种方式适用于磁盘、显卡、声卡、网卡等高速设备大批量数据的传送,它的硬件开销比大。在DMA 方式中,中断的作用仅限于故障和正常传送结束时的处理。

DMA的特点

主存和 DMA 接口之问有一条直接数据通路。由于 DMA 方式传送数据不需要经过 CPU,因此不必中断现行程序,IO与主机并行工作,程序和传送并行工作。 DMA 方式具有下列特点:

  1. 它使主存与 CPU 的固定联系脱钩,主存既可被 CPU 访问,又可被外设访问。
  2. 在数据块传送时,主存地址的确定、传送数据的计数等都由硬件电路直接实现。
  3. 主存中要开辟专用缓冲区,及时供给和接收外设的数据。
  4. DMA 传送速度快,CPU 和外设并行工作,提高了系统效率。
  5. DMA 在传送开始前要通过程序进行预处理,结束后要通过中断方式进行后处理。

DMA控制器的组成

在 DMA 方式中,对数据传送过程进行控制的硬件称为 DMA控制器 (DMA 接口)。当IO设备需要进行数据传送时,通过 DMA 控制器向 CPU 提出 DMA 传送请求,CPU 响应之后将让出系统总线,由 DMA 控制器接管 总线进行数据传送。其主要功能如下

  1. 接受外设发出的DMA 请求,并向CPU 发出总线请求。
  2. CPU相应此总线请求,发出总线响应信号,接管总线控制权,进入DMA操作周期。
  3. 确定传送数据的主存单元地址及长度,并自动修改主存地址计数和传送长度计数。
  4. 规定数据在主存和外设间的传送方向,发出读写等控制信号,执行数据传送操作
  5. 向CPU 报告 DMA 操作结束,

下图给出了一个简单的 DMA 控制器。

截屏2022-08-23 上午11.56.42

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

DMA的传送方式

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

  1. 停止CPU 访存。当IO 设备有DMA 请求时,由 DMA 控制器向 CPU 发送一个停止信号,使 CPU 脱离总线,停止访问主存,直到 DMA 传送一块数据结束。数据传送结束后,DMA 控制器通知CPU 可以使用主存,并把总线控制权交还给 CPU

  2. 周期挪用(或周期窃取)。当 IO 设备有DMA 请求时,会遇到 3种情況:

    1. 此时CPU 不在访存(如CPU 正在执行乘法指令),因此 IO 的访存请求与 CPU 未发生冲突;
    2. CPU 正在访存,此时必须待存取周期结束后,CPU 再将总线占有权让出;
    3. IO 和CPU 同时请求访存,出现访存冲突,此时 CPU 要暂时放弃总线占有权。IO访存优先级高于CPU 访存,因为IO不立即访存就可能丢失数据,此时由 I/0 设备挪用会一个或几个存取周期,传送完一个数据后立即释放总线,是一种单字传送方式。
  3. DMA 与CPU 交替访存。这种方式适用于 CPU 的工作周期比主存存取周期长的情况。例如,若 CPU 的工作周期是 1.2uS,主存的存取周期小于 0.6uS,则可将一个CPU 周期分别为C1和 C2两个周期,其中C1专供DMA 访存,C2专供 CPU 访存。这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分时控制的。

DMA的传送过程

DMA 的数据传送过程分为预处理数据传送后处理3个阶段:

  1. 预处理。由 CPU 完成一些必要的准备工作。首先,CPU 执行几条 I/O 指令,用以测试IO 设备状态,向 DMA 控制器的有关寄存器置初值、设置传送方向、启动该设备等。然后,CPU 继续执行原来的程序,直到 IO 设备准备好发送的数据(输入情况) 或接收的数据(输出情况)时,IO 设备向 DMA 控制器发送 DMA 请求,再由 DMA 控制器向CPU 发送总线请求 (有时将这两个过程统称为 DMA 请求),用以传输数据
  2. 数据传送。DMA 的数据传输可以以单字节(或字)为基本单位,也可以以数据块为基本单位。对于以数据块为单位的传送(如硬盘),DMA 占用总线后的数据输入和输出操作都是通过循环来实现的。需要指出的是,这一循环也是由 DMA 控制器(而非通过CPU 执行程序)实现的,即数据传送阶段完全由 DMA(硬件)控制。
  3. 后处理。DMA 控制器向 CPU 发送中断请求,CPU 执行中断服务程序做 DMA 结束处理,包括校验送入主存的数据是否正确、测试传送过程中是否出错(错误则转诊断程序)及决定是否继续使用 DMA 传送其他数据等。DMA 的传送流程如图所示

截屏2022-08-23 下午12.24.24

DMA方式和中断方式的区别

DMA 方式和中断方式的重要区别如下: ①中断方式是程序的切换,需要保护和恢复现场:而DMA 方式除了预处理和后处理,其他时候不占用 CPU 的任何资源。 ② 对中断请求的响应只能发生在每条指令执行完牛时(即指令的执行周期后);而对 DMA请求的响应可以发生在每个机器周期结束时(在取指周期、间址周期、执行周期后均可),只要 CPU 不占用总线就可被响应。 ③ 中断传送过程需要 CPU 的干预;而DMA 传送过程不需要 CPU 的干预,因此数据传输率非常高,适合于高速外设的成组数据传送。 ④ DMA 请求的优先级高于中断请求。 ⑤ 中断方式具有对异常事件的处理能力,而DMA 方式仅局限于传送数据块的I/O 操作。 ⑥ 从数据传送来看,中断方式靠程序传送,DMA 方式靠硬件传送。

例题