数据传输方式

CPU与I/O设备是通过总线连接的。
最简单的连接方式是单总线结构
image.png
总线中包含三类总线

  • 控制总线-用于传输命令控制信号
  • 数据总线-用于传输数据
  • 地址总线-用于标识设备

因为总线是公用的,因此每次使用时,需要一个地址说明此次参与传输的设备,每一个设备都分配到一个唯一的地址。当处理器需要进行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传输的中转站

image.png

一个简单的键盘输入操作

其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值的命令