DMA传送的基本特点是不经过CPU,不破坏CPU内各寄存器的内容,由DMAC取代CPU,获得总线控制权,实现内存与外设或者内存的不同区域之间大量数据的快速传送。在IBM PC系统中,DMA方式传送一个字节的时间通常是一个总线周期,即4个时钟周期时间。CPU内部的指令操作只是暂停这个总线周期,然后继续操作,指令的操作次序不会被破坏。所以DMA传送方式特别适合用于外部设备与存储器之间高速成批的数据传送。
典型的DMAC的工作电路如图8-1所示。
DMA数据传送的工作过程大致如下:
①外设向DMAC发出DMA传送请求。
②DMAC通过连接到CPU的HOLD信号向CPU提出DMA请求。
③CPU在完成当前总线操作后会立即对DMA请求做出响应。CPU的响应包括两个方面:一方面,CPU将控制总线、数据总线和地址总线浮空,即放弃对这些总线的控制权;另一方面,CPU将有效的HLDA信号加到DMAC上,用此来通知DMAC,CPU已经放弃了总线的控制权。
③待CPU将总线浮空,即放弃了总线控制权后,由DMAC接管系统总线的控制权,并向外设送出DMA的应答信号。(www.xing528.com)
⑤由DMAC送出地址信号和控制信号,实现外设与内存或内存不同区域之间大量数据的快速传送。
图8-1 典型的DMAC的工作电路
⑥DMAC将规定的数据字节传送完之后,通过向CPU发送HOLD信号,撤销对CPU的DMA请求。CPU收到此信号,一方面使HLDA无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。
需要注意的是,在内存与外设之间进行DMA传送期间,DMAC只是输出地址及控制信号,而数据传送是直接在内存和外设端口之间进行的,并不经过DMAC;对于内存不同区域之间的DMA传送,则应先用一个DMA存储器读周期将数据从内存的源区域读出,存入到DMAC的内部数据暂存器中,再利用一个DMA存储器写周期将该数据写到内存的目的区域中去。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。