比起程序查询方式,中断方式节省了大量的用于查询外设工作状态的时间。在中断方式下,CPU不再需要轮流对每个外设进行查询,一方面可以使得CPU与外设并行工作,另一方面,由于外设具有申请CPU的主动权,可以很好的满足外设对CPU提出输入/输出服务要求的随机性,即具备实时性。但是,中断控制方式仍然有诸多不足的地方。首先,在整个中断处理过程中都是需要CPU参与。大家知道,CPU在两个任务之间来回进行切换的时候需要进行一定的保护现场和恢复现场的工作,而这些工作对于I/O设备数据传输本身来说是没有实际意义的,而是系统资源的浪费。其次,在中断方式下,每申请一次中断,都需要进入中断的应答周期,重复进行现场保存现场恢复等过程。在需要进行大量数据传输的情况下,地址增1和计数器减1都需要执行程序来实现,中断控制方式显然是效率太低。再次,由中断产生的程序转移必然引起CPU指令队列的刷新,这也会产生时间的延误。通过前面对微处理器的学习,大家已经知道,对8086来说,取指令和执行指令是并行进行的。也就是说在CPU指令队列中存放了即将执行的指令。但是由于中断的产生,CPU当前的指令队列被清除,等中断处理程序执行完毕并返回当前的现场时,执行部件还需要等待指令重新装入才能继续执行当前的程序。这样一来,CPU的并行工作机制就失去了原有的效率,这种影响在中断产生频繁时尤为严重。 由于DAM控制外围设备与主存储器之间传送数据不需要执行程序,也不需要用到CPU的数据寄存器和指令寄存器,因此,也就不需要做现场的保存与恢复工作,从而使得DMA方式的速度比中断等其他方式的工作速度大大提高。在DMA方式中,整个数据的传送过程不需要CPU的干预。 |