I/O 接口的组成

  1. 设备控制器与 CPU 的接口:用于实现 CPU 与设备控制器之前的通信。该接口有三类信号线:数据线、地址线和控制线
  2. 设备控制器与设备的接口:一个设备控制器可以连接多个设备,所以控制器中有多个设备接口。每个接口都可以传输数据、控制和状态三种类型的信号
  3. I/O 逻辑:用于实现对设备的控制

Tip

I/O 接口通过 通信总线(电缆) 和外设连接。

I/O 接口的类型

  1. 按数据传送方式,可分为并行接口(一个字节或一个字的所有位同时发送)和串行接口(一位一位有序传送)
  2. 按主机访问 I/O 设备的控制方式,可分为程序查询接口、中断接口和 DMA 接口
  3. 按功能选择的灵活性,可分为可编程接口不可编程接口

I/O 端口

I/O 端口是指设备控制器中可被 CPU 直接访问的寄存器,主要有以下三类:

  1. 数据寄存器
  2. 状态寄存器
  3. 控制寄存器

Tip

状态端口和控制端口可合用一个寄存器。

I/O 编址

I/O 端口想要被 CPU 访问,需要对各个端口进行编址,每个端口对应一个端口地址。编址方式分为独立编址统一编址两种。

(1) 独立编址

I/O 端口的地址空间和主存地址空间是两个独立的地址空间。普通用户程序不能对端口进行访问,需要操作系统使用特殊的 I/O 指令才能访问端口。

优缺点

  • 端口数比主存单元少得多,只需少量地址线,使 I/O 端口译码简单,寻址速度快
  • 使用专用 I/O 指令,使程序更加清晰,便于理解
  • I/O 指令少,只提供简单的传输操作,所以程序设计的灵活性差
  • CPU 需要提供独立的设备读/写控制信号,增加了控制的复杂性

(2) 统一编址

统一编址又称内存映射 I/O,是指将贮存地址空间分出一部分给端口进行编址。

优缺点

  • 可以使用访存指令访问端口,操作更加灵活
  • 端口地址占用了主存地址空间,使主存的可用容量变小
  • 识别 I/O 时全部地址线都需参加译码,降低了寻址速度

阻塞 I/O 和非阻塞 I/O

阻塞 I/O 是指在 I/O 操作过程中,进程被阻塞。

非阻塞 I/O 是指在 I/O 操作过程中,进程还能继续运行,并轮询检查 I/O 操作结果。