计算机与物理世界交互的方式,通过各种io设备,能够使用计算机做任何事

就像人操作各种机器一样,机器提供各种开关和按钮,仪表和指示灯,进料口和出料口。计算机中的io设备将这些物理操作抽象成了寄存器和地址,通过访问或设置不同的寄存器和地址实现和io设备的交互

但是cpu的运行速度远快于io设备,直接让cpu操作这些设备,就像一个工人在一台反应极慢的设备上死磕,对于cpu利用率很低,所以为了匹配cpu的速度,io设备也需要升级,不能事无巨细的要cpu来做。

所以很多的IO设备都有设备控制器,就是IO设备上的许多芯片,他们通电之后类似一个简易的cpu,可以自主的执行设备操作,不需要cpu亲自执行。cpu只需要和设备控制器交流,之后只用等待结果即可,cpu就可以做其他事情了。

那么就有了下面两个问题:

通信方式:cpu如何与设备进行通信

  • 内存映射IO:将IO设备上的寄存器或者DRAM的地址映射内存地址空间中,这样cpu可以想访问内存地址一样和设备进行交互
  • 端口映射IO:cpu直接与IO设备通信,使用特殊的cpu指令,设备也可以使用自己的通信协议

数据传输技术:数据在何时,以何种方式传输

  • 轮询:设备使用一个寄存器表示状态,cpu轮询设备状态,如果是可执行,就处理数据
  • 终端驱动:当数据准备好时,设备发起中断给cpu,cpu执行中断处理程序,处理数据