本文已参与「新人创作礼」活动,一起开启掘金创作之路。
输入输出设备
我们的输入输出设备要想和CPU通信,必须要通过接口。而这个接口有的在主板上,有的在输入输出设备里边。
CPU如何控制I/O设备
-
CPU向I/O设备写入数据时,会把数据存放在接口的数据寄存器中。
-
CPU向I/O设备发送命令,会把命令存在命令寄存器。然后控制电路把状态寄存器里面的状态设置为no-ready后,再将命令解码,去执行命令所对应的实际的操作。
-
状态寄存器就是告诉我们的CPU,I/O设备是否在工作状态。在工作状态的话,是不接受CPU发过来的数据或者命令。直到之前的工作完成,状态变为ready时,才能接受接下来的数据和命令。
CPU如何与I/O设备通信
在简单指令集中,并没有专门和I/O设备通信的指令。CPU要想和I_O设备通信,会通过内存映射I/O这种技术来实现。
这种技术就是说,我们把I/O设备的各个寄存器,I/O设备内部的内存地址,都映射到主内存中。CPU要想和这些I/O设备通信,就往这些地址发送数据(包括地址信息和数据信息)。
同时,I/O设备会监控地址总线。把CPU给自己发送的数据存到对应的寄存器和自己的内存中。这里的数据包括命令、状态查询、数据信息。
除了这种内存映射的方式和I/O设备通信之外,在复杂指令集中,是可以通过特定的指令,来支持端口映射I/O。
可以看到这张显卡,既有内存映射I/O(Memory Range)也有端口映射(I/O Range)。