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 接口的类型

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

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 设备读/写两组控制信号,增加了控制逻辑电路的复杂性