【答案解析】解析:直接存储器存取(Direct Memory Access,DMA)方式可以使得数据从I/O模块到主存的传输过程中,无需CPU的中转,这个工作转移给了DMA控制器(DMAC)来完成,这种方式可以实现高速的数据传输。 (1)DMA控制器 DMAC既能访问系统总线,也能独立访问主存,因此,DMAC能完成主存和I/O设备之间的数据交换。DMAC的过程如图1-7所示。 地址寄存器是内存地址,每传递一个数据,将这个寄存器加1,长度寄存器减1,当长度寄存器为0时,给中断机构完成信号,通知CPU进行后续处理。
.jpg)
当CPU收到I/O请求时,向DMAC发出相应指令。DMAC首先判断外设是否可用,如果可用,则填充地址寄存器、长度寄存器等,向CPU发出总线请求信号,申请总线的处理权。CPU收到总线请求信号时,让出总线控制权,然后DMAC将数据在外设和内存指定区域之间进行传送,而长度寄存器保存的值随着数据的传送不断减小,当减小到0时,通过中断机构向CPU发出中断请求,CPU响应中断,对内存中的数据进行后续的处理。 (2)DMA的传送过程 DMA的传送过程如图1-8所示。
.jpg)
在DMA传输过程中,CPU停止访问主存,只进行一些与总线无关的内部操作。这种方法常用于高速的I/O设备。优点是减少系统总线控制权的交换次数,实现简单;缺点是使CPU在DMA过程中基本上无所事事。为了克服这个缺点,一般采用时间片轮转法和借用周期法。 时间片轮转法按照一定时间间隔,将总线控制权分别轮换着交给CPU和DMAC。这样CPU就不会停止工作,但往往外设的速度低,可能使得DMAC的某些时间空转。因此,就效率而言,时间片轮转法的效率仍然不高。 借用周期法是时间片轮转法的改进,即当有DMA操作时,DMAC控制总线访问内存,其他时间由CPU控制总线。这种方式适合于外设速度远低于总线速度的高速主机,由于要判断DMAC'是否需要使用总线,所以实现起来比较复杂。 (3)DMA方式和中断方式的区别 DMA方式中使用到了中断,但是DMA和中断这两种I/O方式是有很大区别的。它们最根本的区别在于,使用中断方式时,主存和I/O控制器之间的数据传送仍然需要用CPU来操作,需要使用CPU的寄存器等资源,如图1-9所示。
.jpg)