数据传输方式
CPU与I/O设备是通过总线连接的。
最简单的连接方式是单总线结构
总线中包含三类总线
- 控制总线-用于传输命令控制信号
- 数据总线-用于传输数据
- 地址总线-用于标识设备
因为总线是公用的,因此每次使用时,需要一个地址说明此次参与传输的设备,每一个设备都分配到一个唯一的地址。当处理器需要进行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接口中的数据和状态寄存器如下,这两个寄存器都会被分配地址
- 数据寄存器DATAIN,用于临时保存键盘输入的数据
- 状态寄存器SIN,当SIN为1时表示数据寄存器中保存了输入数据
当键盘一个键被按下时,SIN被置为1,DATAIN存储被按下字符的二级制值
处理器循环检查SIN值
- 在地址线上发送SIN的地址,在控制线上发送读取SIN值的命令
- 地址译码器发现CPU请求自己所属的设备的状态寄存器
- 控制电路根据控制线的命令使状态寄存器SIN发送自己的值1
CPU发现SIN值为1,读取DATIN并将SIN值置0
- 在地址线上发送DATAIN的地址,在控制线上发送读取DATAIN值的命令
- 控制电路使DATAIN数据传输到数据线上
- 随后在地址线上发送SIN的地址,在控制线上发送清0SIN值的命令