跳转至

输入输出的控制方式

I/O(输入/输出)设备的控制方式是计算机系统中处理外围设备与主存储器间数据传输的重要机制。其目标是尽量减少CPU对I/O操作的干预,从而提高CPU利用率和系统整体效率。常见的I/O控制方式主要有以下四种:

  • 直接程序控制方式
  • 中断驱动控制方式
  • 直接存储器访问(DMA)控制方式
  • 通道控制方式

直接程序控制方式

原理

  • 直接程序控制是最基本的 I/O 方式,CPU 通过执行输入/输出指令直接控制外围设备。
  • CPU 会通过轮询(Polling)的方式,不断检查设备的状态(忙/闲标志位),决定是否进行数据传输。

流程

  1. CPU 发送指令,检查 I/O 设备的状态(如是否忙)。
  2. 如果设备准备就绪(不忙),则进行数据传输(一个字节或一个数据块)。
  3. 重复以上步骤,直到所有数据传输完成。

优缺点

  • 优点
    • 实现简单,不需要复杂的硬件支持。
  • 缺点
    • 效率低:CPU 必须等待外围设备完成操作,造成浪费。
    • 适用范围有限:适合于简单、小型系统(CPU 和 I/O 速度差异较小的场景)。

应用场景:适用于早期计算机系统或微控制器(MCU)等简单设备。


中断驱动控制方式

原理

  • 中断驱动控制方式引入了中断机制,外围设备在需要 CPU 处理时,会向 CPU 发出中断请求(Interrupt Request,IRQ)。
  • CPU 可以并行处理其他任务,只有在接收到中断信号时,才暂停当前任务,转而处理 I/O 操作。

流程

  1. CPU 发出 I/O 请求后继续执行其他任务,而不是等待。
  2. 外围设备在准备好或完成操作时向 CPU 发出中断信号。
  3. CPU 响应中断,保存当前上下文,并执行中断处理程序完成数据传输。
  4. 完成 I/O 操作后,CPU 恢复原有任务。

优缺点

  • 优点
    • 提高了 CPU 利用率,因为 CPU 不再需要轮询设备状态。
    • 适合中等速度的 I/O 设备。
  • 缺点
    • 中断频繁:每次传输一个数据字节或字符都会触发一次中断,增加了 CPU 的中断处理开销。
    • 为减少中断次数,可通过增加缓冲区来缓解。

应用场景:常见于键盘输入、鼠标操作、低速串口通信等。


直接存储器访问(DMA)控制方式

原理

  • DMA(Direct Memory Access)方式通过DMA控制器,在 CPU 与主存之间建立直接的数据传输通道。
  • DMA 控制器接管 CPU 的部分功能,负责在设备与主存之间直接传输数据,CPU 只需在传输开始和结束时进行干预。

流程

  1. CPU 向 DMA 控制器发送命令,指定数据源地址、目标地址和传输长度。
  2. DMA 控制器接管总线控制权,执行数据传输,CPU 可以继续处理其他任务。
  3. 传输完成后,DMA 控制器通过中断通知 CPU 结束操作。

组成

  • 命令/状态寄存器(CR):存放命令或设备状态信息。
  • 内存地址寄存器(MAR):存放传输数据的目标/源地址。
  • 数据寄存器(DR):用于暂存数据。
  • 数据计数器(DC):记录剩余传输的字节数。

优缺点

  • 优点
    • 高效:适合高速设备的批量数据传输,减少 CPU 负担。
  • 缺点
    • 功能较单一,无法处理复杂的 I/O 任务。

应用场景:高速硬盘数据传输、显卡视频数据传输、网络设备等。


通道控制方式

原理

  • 通道控制方式通过引入I/O 通道(Channel),实现 I/O 操作的进一步并行化。
  • I/O 通道可以管理多个设备,并自主执行数据传输任务,减少了 CPU 的直接参与。

流程

  1. CPU 通过操作系统向通道发送启动指令,并将 I/O 请求信息和通道程序的地址传递给通道。
  2. 通道读取通道程序(包含一系列 I/O 操作指令),控制设备进行数据传输。
  3. 传输完成后,通道向 CPU 发出中断信号,通知任务结束。

通道指令格式

  • 命令码:指定操作类型(读、写等)。
  • 数据主存地址:数据传输的目标/源地址。
  • 传输字节数:要传输的字节数量。

优缺点

  • 优点
    • 高度并行化:实现 CPU、通道和设备的并行工作,减少 CPU 干预。
    • 适合多设备和复杂任务的管理。
  • 缺点
    • 设计复杂,硬件成本较高。

应用场景:大型计算机、服务器等需要高效数据传输的场景。


总结与对比

控制方式 优点 缺点 适用场景
直接程序控制 实现简单、硬件要求低 CPU 效率低、设备利用率低 简单系统、低速设备
中断驱动控制 提高 CPU 利用率 频繁中断会影响系统性能 键盘、鼠标、串口通信等
直接存储器访问 高效、适合大批量高速数据传输 无法处理复杂任务 硬盘、显卡、网络设备等
通道控制 高度并行化、适合复杂任务 硬件复杂、设计成本高 大型计算机、多任务系统