I/O 接口的组成
- 设备控制器与 CPU 的接口:用于实现 CPU 与设备控制器之前的通信。该接口有三类信号线:数据线、地址线和控制线
- 设备控制器与设备的接口:一个设备控制器可以连接多个设备,所以控制器中有多个设备接口。每个接口都可以传输数据、控制和状态三种类型的信号
- I/O 逻辑:用于实现对设备的控制
Tip
I/O 接口通过 通信总线(电缆) 和外设连接。
I/O 接口的类型
- 按数据传送方式,可分为并行接口(一个字节或一个字的所有位同时发送)和串行接口(一位一位有序传送)
- 按主机访问 I/O 设备的控制方式,可分为程序查询接口、中断接口和 DMA 接口
- 按功能选择的灵活性,可分为可编程接口和不可编程接口
I/O 端口
I/O 端口是指设备控制器中可被 CPU 直接访问的寄存器,主要有以下三类:
- 数据寄存器
- 状态寄存器
- 控制寄存器
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 操作结果。