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

I/O 接口的功能
- 进行地址译码和设备选择:使主机和指定外设交换信息
- 实现主机和外设的通信联络控制:实现主机—I/O 接口—I/O 设备之间的通信
- 实现数据缓冲:通过数据缓冲寄存器(DBR)达到主机和外设工作速度的匹配
- 信号格式的转换:串 - 并、并 - 串、电平、数 - 模、模 - 数等格式转换
- 传送控制命令和状态信息:接收从控制总线发来的控制信号、时钟信号;通过状态寄存器反馈设备的各种错误、状态信息,供 CPU 查用

I/O 接口的基本结构

- 外部接口:通过接口电缆与外设连接,数据传输可能是串行方式,因此 I/O 接口需具有串/并转换功能
- 内部接口:与系统总线相连,实质上是与内存、CPU 相连
- 如何确定要操作的设备:每个设备对应一组寄存器,操作不同的寄存器就是在操作不同的设备
- I/O 指令:对数据缓冲寄存器、状态/控制寄存器的进行访问操作的指令
- 只能在 OS 内核的底层 I/O 软件中使用
- I/O 指令实现的数据传送通常发生在通用寄存器和 I/O 端口之间
- 是一种特权指令
I/O 接口的类型
- 按数据传送方式(外设和接口一侧)分:
- 并行接口:一个字节或一个字所有位同时传送
- 串行接口:一位一位地传送
- 按主机访问 I/O 设备的控制方式分:
- 程序查询接口
- 中断接口
- DMA 接口
- 按功能选择的灵活性分:
- 可编程接口
- 不可编程接口
I/O 端口及其编址
I/O 端口
- I/O 端口:接口电路中可以被 CPU 直接访问的寄存器,可以进行读/写的寄存器
- 接口 = 端口 + 相应的控制逻辑
- I/O 端口想要能被 CPU 访问,则必须对各个端口进行编号,每个端口对应一个端口地址
- 主要的 I/O 端口有:
- 数据端口:CPU 对数据端口中的数据执行读写操作
- 状态端口:对状态端口中的外设状态只能执行读操作
- 控制端口:对控制端口中的各种控制命令只能执行写操作
I/O 编址
统一编址
- 定义:
- 存储器映射方式
- 把 I/O 端口当做存储器的单元进行地址分配,CPU 不需要设置专门的 I/O 指令,用统一的访存指令就可以访问 I/O 端口
- 特点:依靠地址码的不同区分存储单元和 I/O 设备
- 优点:
- 不需要专门的 I/O 指令
- 可以使 CPU 访问 I/O 的操作更灵活、更方便
- 可以使端口有较大的编址空间
- 缺点:
- 端口占用主存地址空间,使内存容量变小
- 外设寻址时间长(地址位数多,地址译码速度慢)
- 译码电路复杂,降低了译码速度【在识别 I/O 端口时全部地址线都需要参加译码】
独立编址
- 定义:
- I/O 映射方式
- I/O 端口的地址空间与主存地址空间是两个独立的地址空间
- 需要设置专门的 I/O 指令来访存 I/O 端口
- 特点:通过专门的 I/O 指令来区分存储单元和 I/O 设备【I/O 指令的地址码给出 I/O 端口号】
- 优点:
- 使用专用 I/O 指令,程序编制清晰
- I/O 端口地址位数少,译码简单,地址译码速度快
- 缺点:
- I/O 指令少,一般只能对端口进行传送操作
- 需要 CPU 提供存储器读/写、I/O 设备读/写两组控制信号,增加了控制逻辑电路的复杂性