一般而言,CPU管理外围设备的输入输出控制方式有5种:程序查询方式、程序中断方式、DMA方式、通道方式、外围处理机方式,前两种方式由软件实现,后三种方式由硬件实现。
在进行信息交换之前,CPU要设置传输参数、传输长度等,然后启动外设工作,与此同时,外设则进行数据传输的准备工作;相对于CPU来说,外设的速度是比较低的,因此外设准备数据的时间往往是一个漫长的过程,而在这段时间里,CPU除了循环检测外设是否已准备好之外,不能处理其他业务,只能一直等待;直到外设完成数据准备工作,CPU才能开始进行信息交换。
这种方式的优点是CPU的操作和外围设备的操作能够完全同步,硬件结构也比较简单。但是,外围设备的动作通常很慢,程序进行循环查询白白浪费了宝贵的CPU时间,数据传输效率低下。在当前的实际应用中,除了单片机之外,已经很少使用程序查询方式了。
通常,当一个中断发生时,CPU暂停其现行程序,转而执行中断处理程序,完成数据I/O工作;当中断处理完毕后,CPU又返回到原来的任务,并从暂停处继续执行程序。
这种方式节省了CPU时间,是管理I/O操作的一个比较有效的方法。中断方式一般适用于随机出现的服务,并且一旦提出要求,应立即执行。与程序查询方式相比,程序中断方式的硬件结构相对复杂一些,服务成本较大。
1. 程序查询方式
程序查询方式是早期计算机中使用的一种方式,CPU与外围设备的数据交换完全依赖于计算机的程序控制。在进行信息交换之前,CPU要设置传输参数、传输长度等,然后启动外设工作,与此同时,外设则进行数据传输的准备工作;相对于CPU来说,外设的速度是比较低的,因此外设准备数据的时间往往是一个漫长的过程,而在这段时间里,CPU除了循环检测外设是否已准备好之外,不能处理其他业务,只能一直等待;直到外设完成数据准备工作,CPU才能开始进行信息交换。
这种方式的优点是CPU的操作和外围设备的操作能够完全同步,硬件结构也比较简单。但是,外围设备的动作通常很慢,程序进行循环查询白白浪费了宝贵的CPU时间,数据传输效率低下。在当前的实际应用中,除了单片机之外,已经很少使用程序查询方式了。
2. 程序中断方式
中断是外围设备用来“主动”通知CPU,准备发送或接收数据的一种方式。通常,当一个中断发生时,CPU暂停其现行程序,转而执行中断处理程序,完成数据I/O工作;当中断处理完毕后,CPU又返回到原来的任务,并从暂停处继续执行程序。
这种方式节省了CPU时间,是管理I/O操作的一个比较有效的方法。中断方式一般适用于随机出现的服务,并且一旦提出要求,应立即执行。与程序查询方式相比,程序中断方式的硬件结构相对复杂一些,服务成本较大。