直接存储器存取( Direct Memory Access ) 图 DMA 方式传送路径程序控制的数据输入/输出 DMA 控制的数据输入/输出 CPU 总线外设存储器 DMA 时,数据沿实线进行传送。 DMA 时,在 DMA 控制下,数据沿虚线进行传送。 DMA 传送方式是外设与内存之间,在 DMA 控制器的控制下,直接进行数据交换而不通过 CPU 。这样数据传送的速度上限将主要取决于存储器/外设的存取速度。 DMA 方式传送时, CPU 让出总线(即 CPU 连到总线上的这些线处于高阻抗状态), 系统总线由 DMA 控制器接管。 DMA 的工作过程当外设把数据准备好后,可进行 DMA 传送时,向 DMA 控制器发出 DMA 请求信号 DREQ. DMA 控制器收到请求后,向 CPU 发 HOLD 信号,请求使用总线。 CPU 在当前总线周期结束后,响应 DMA 请求,发出 HLDA 信号,表示 CPU 已让出总线。 CPU 与系统总线之间呈高阻抗状态。 DMA 控制器收到 HLDA 信号就接管总线, DMA 的工作过程在全部数据传送完后, DMA 控制器撤除总线请求信号 HOLD (变低),在下一个总线周期的上升沿, CPU 就使 HLDA 变低,重新获得对总线的控制。 DMA 传送方式还可以在存储器的两个区域或两种高速的外设之间进行。 DMA 控制器向地址总线发存储器地址信号,向外设端口发 DMA 响应信号和读控制信号,因而将外设端口中的数据送上数据总线,并发出存储器写命令,这样就把外设输入的数据直接写入到存储器中。适用场合: 硬盘和软盘 I/O 快速通信通道 I/O 多处理机和多程序数据块传送扫描操作快速数据采集地址寄存器数据块长度计数器控制寄存器和状态寄存器总线控制逻辑附加功能的硬件支持 DMAC 主要硬件被动态:受控器主动态:主控器 DMAC 在系统中地位 8237 所处的两种不同的工作状态是,在 8237 未取得总线控制权以前, CPU 处于主控状态,而 8237 处于从属状态。一旦 8237 取得总线控制权后, 8237 便上升为主控状态,完全在 8237 控制下完成存储器和外设之间的数据传送功能, CPU 不再参与数据传送的操作。 DMA 控制器 8237 ( P239 自学!) ? 8237 的工作方式 8237 的每个通道都有自己的模式寄存器,通过对模式寄存器写入不同的内容,各通道可以独立地选择不同的工作模式和操作类型。(1) 单字节传输方式每次 DMA 操作只传送一个字节。即 DMAC 发出一次占用总线请求,获得总线控制权后,只传送一个字节的数据,然后就自动把总线控制权交还给 CPU ,让 CPU 至少占用一个总线周期。(2) 数据块传
第4节 直接存储器存取 来自淘豆网m.daumloan.com转载请标明出处.