一、I/O设备组成
I/O设备由机械部件和电子部件组成,电子部件包括(I/O控制器、设备控制器)
1、I/O设备的机械部件:
- I/O设备的机械部件主要用来执行具体I/O操作。
如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED
屏;移动硬盘的磁臂、磁盘盘面。 - I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
2、I/O设备的电子部件(I/O控制器)
- CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。
- 这个电子部件就是I/O控制器,又称设备控制器。CPU可控制I/O控制器,又由I/O控制器来控制设备的机械部件。
接受和识别CPU发出的命令:CPU可以控制I/O控制器,所以I/O控制器肯定要能接受并识别CPU的命令。如CPU发来的read/write命令,I/O控制器中会有相应的的控制寄存器来存放命令参数。
向CPU报告设备的状态:I/O控制器会有相应的状态寄存器,用于记录I/O设备当前的状态。如1表示空闲,0表示忙碌。
数据交换:I/O控制器作为机械部件和CPU的中介,需要实现两者之间的数据交换。I/O控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发出的数据,之后再由控制器传动设备。输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存其中取走数据。
地址识别:类似于内存地址,为了区分上面提到的各个寄存器,也需要给各个寄存器设置一个特定的地址。I/O控制器通过CPU提供的地址来判断CPU要读/写哪个寄存器。
二、I/O控制器的组成
I/O控制器由以下三个部分组成:CPU与控制器的接口、I/O逻辑、控制器与设备的接口。
- IO控制器作为CPU和设备之间的中介,左边的部分是中介与CPU连接的部分,即CPU与控制器的接口,用于实现CPU与控制器之间的通信。CPU通过控制线发出命令,通过地地址线指明要操作的设备;通过数据线来取出(输入)数据,或放入(输出)数据。
- 中间的部分I/O逻辑是用于负责接收和识别CPU的各种命名(如地址译码),并根据CPU的命令对相应的设备发送命令。
- 右边的部分是中介与设备之间的连接,即控制器与设备的接口,用于实现控制器和设备之间的通信。
Eg:如果CPU想通过设备输出一个数据,首先CPU控制线向IO逻辑发出一个输出的指令,同时在地址线上说明自己要操作哪个设备,并把要输出的数据存放在数据寄存器中(如果指令中带有参数,那么参数就会存放在控制寄存器中),I/O逻辑接收命令并识别了CPU的指令,找到相应的设备,并得根据该设备的状态寄存器判断当前设备的状态,如果当前设备是空闲的,那么I/O逻辑将数据寄存器中的值取出,通过设备与控制器的接口将数据输出外部设备上。
各个寄存器的作用:
- 数据寄存器:存放从设备发送来的输入数据或从CPU发送来的输出数据。
- 控制期存器:存放从CPU发送来的控制信息。
- 状态寄存器:用于存放从设备发送来的设备的状态信息。
注:一个I/O控制器可能会对应多个设备,所以数据寄存器、控制寄存器和状态寄存器可能会有多个(如每个控制器/状态寄存器对应一个具体的设备)。并且这些寄存器要有相应的地址,才能方便CPU操作。