I/O接口是处于一组I/O端口和对应的设备控制器之间的一种硬件电路。它起翻译器的作用,即把I/O端口中的值转换成设备所需要的命令和数据。从另一个角度来看,它检测设备状态的变化,并对起状态寄存器作用的I/O端口进行相应地更新。还可以通过一条IRQ线把这种电路连接到可编程中断控制器上,以使它代表相应的设备发出中断请求。
有两类类型的接口:
专用I/O接口
专门用于一个特定的硬件设备。在一些情况下,设备控制器与这种I/O接口处于同一块卡中,连接到专用I/O接口上的设备可以是内部设备(位于PC机箱内部的设备),也可以是外部设备(位于PC机箱外部的设备)。例如键盘接口、图形接口、磁盘接口、总线鼠标接口及网络接口都属于专用I/O接口。
通用I/O接口
用来连接多个不同的硬件设备。连接到通用I/O接口上的设备通常都是外部设备。例如并口、串口、通用串行总线(USB)、PCMCIA接口及SCSI接口都属于通用I/O接口。
复杂的设备可能需要一个设备控制器来驱动。控制器具有两方面的作用,一是对从I/O接口接收到的高级命令进行解释,并通过向设备发送适当的电信号序列强制设备执行特定的操作;二是对从设备接收到的电信号进行转换和解释,并通过I/O接口修改状态寄存器的值。
磁盘控制器是一种比较典型的设备控制器,它通过I/O接口从微处理器接收诸如“写这个数据块”之类的高级命令,并将其转换成诸如“把磁头定位在正确位置的磁道”上和“把数据写入这个磁道”之类的低级磁盘操作。现在的磁盘控制器相当复杂,因为它们可以把磁盘数据快速保存到内存的缓存区中,还可以根据实际磁盘的几何结构重新安排CPU的高级请求,使其优化。