CPU通过接口对外设进行控制的方式有以下几种:
(1)程序查询方式
这种方式下,CPU通过I/O指令询问指定外设当前的状态,如果外设准备就绪,则进行数据的输入或输出,否则CPU等待,循环查询。
这种方式的优点是结构简单,只需要少量的硬件电路即可,缺点是由于CPU的速度远远高于外设,因此通常处于等待状态,工作效率很低
(2)中断处理方式
在这种方式下,CPU不再被动等待,而是可以执行其他程序,一旦外设为数据交换准备就绪,可以向CPU提出服务请求,CPU如果响应该请求,便暂时停止当前程序的执行,转去执行与该请求对应的服务程序,完成后,再继续执行原来被中断的程序。
中断处理方式的优点是显而易见的,它不但为CPU省去了查询外设状态和等待外设就绪所花费的时间,提高了CPU的工作效率,还满足了外设的实时要求。但需要为每个I/O设备分配一个中断请求号和相应的中断服务程序,此外还需要一个中断控制器(I/O接口芯片)管理I/O设备提出的中断请求,例如设置中断屏蔽、中断请求优先级等。
此外,中断处理方式的缺点是每传送一个字符都要进行中断,启动中断控制器,还要保留和恢复现场以便能继续原程序的执行,花费的工作量很大,这样如果需要大量数据交换,系统的性能会很低。
(3)DMA(直接存储器存取)传送方式
DMA最明显的一个特点是它不是用软件而是采用一个专门的控制器来控制内存与外设之间的数据交流,无须CPU介入,大大提高CPU的工作效率。
在进行DMA数据传送之前,DMA控制器会向CPU申请总线控制 权,CPU如果允许,则将控制权交出,因此,在数据交换时,总线控制权由DMA控制器掌握,在传输结束后,DMA控制器将总线控制权交还给CPU。
(4)无条件传送方式
(5)I/O通道方式
(6)I/O处理机方式
80x86 CPU,具有如下方式:
1、程序控制方式
何时对 IO 接口操作,由 CPU 所执行的程序来决定。并不理会外设的状态。
外设是 LED 等简单器件时,可采用此方式,工作速度最快。
2、查询控制方式
当外设是某些智能设备、具有不同的工作状态时,CPU 则需要先读取状态寄存器以了解接口情况,然后再完成相应的数据操作。
采用这种方式,整机的工作效率,比较低。
特别是一些教材给出的程序,就是在那死等,这样做,效率就极低了,甚至会死机。
3、中断控制方式
利用外设的状态信号,可令 CPU 暂停正在执行的程序,转去执行不同的分支处理。
这种方式,效率高且实时性好。
4、DMA(Direct Memory Access)控制方式
CPU 的长处是运算,其数据传输的速度较低。
另外采用一个“DMA控制器(DMAC)”,传送数据的速度,比 CPU 快得多,尤其是在批量传送时。
成本高。硬件、软件,都高。
电路复杂,所以,故障率,必然就高。
DMAC 工作时,CPU 就闲置了,什么也不干。所以,此时 CPU 的效率为 0。