CPU 无法直接控制 IO 设备的机械部件,因此 IO 设备还要有个电子部件作为 CPU 和 IO 设备机械部件之间的”中介”,用于实现 CPU 对设备的控制。这个电子部件就是 IO 控制器,又称为设备控制器。CPU 可控制 IO 控制器,IO 控制器来控制设备的机械部件。

1. IO 控制器功能

  1. 接收和识别设备 CPU 指令

    CPU 的读写指令和参数存储在控制寄存器中

    如 CPU 发来的 read/write 命令,I/O 控制器中会有相应的控制寄存器来存放命令和参数

  2. 向 CPU 报告设备的状态

    IO 控制器中会有相应的状态寄存器,用于记录 IO 设备的当前状态。(比如 1 代表设备忙碌,0 代表设备就绪)

  3. 数据交换

    数据寄存器,输出时数据寄存器用来寄存 CPU 发来的数据,之后再由控制器传送设备。输入时,数据寄存器用于暂存设备发来的数据,之后 CPU 从数据寄存器取走数据

  4. 地址识别

    类似于内存的地址,为了区分设备控制器中的各个寄存器,需要给各个寄存器设置一个特定的地址。IO 控制器通过CPU 提供的地址来判断 CPU 要读写的是哪个寄存器。

2. IO 控制器的组成

  1. CPU 与控制器之间的接口(实现控制器与 CPU 之间的通信)
  2. IO 逻辑(负责接收识别CPU发出的命令,并负责向设备发出命令)
  3. 控制器与设备之间的接口(实现控制器与设备之间的通信)

3. 两种寄存器编址方式

一个 I/O 控制器可能会对应多个设备
数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便 CPU 操作。

  1. 有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像 I/O

  2. 另一些计算机则采用 I/O 专用地址,即寄存器独立编址

  3. 内存映射 IO

    控制器中的寄存器与内存统一编制,可以采用对内存进行操作的指令来对控制器进行操作。

  4. 寄存器独立编制

    控制器中的寄存器独立编制。需要设置专门的指令来操作控制器。