在没有DMA机制的情况下,一I/O设备通过软件方式向CPU发起中断。
在DMA方式下,在内存和DMA接口之间有一条物理通路。这样主存和设备交换数据时,不需要通过CPU,也不需要CPU暂停现行程序为设备服务,省去了保护现场和恢复现场,因此工作速度比程序中断方式的工作速度高。
【资料图】
但是可能出现高速I/O设备和CPU争用主存的情况。DMA的访问优先级较高,出现同时访问时,CPU必须将总线(地址线、数据线)控制权交由DMA接口使用。
通常DMA和主存交换数据时采用如下三种方式:
1. 停止CPU访问主存;
2. 周期挪用;
3. DMA与CPU交替访问。
DMA接口的功能
1. 向CPU申请DMA传送。
2. 在CPU允许DMA工作时,处理总线控制权的转交,避免因进入DMA工作而影响CPU正常活动或引起总线竞争。
3. 在DMA期间管理系统总线,控制数据传送。
4. 确定数据传送的起始地址和数据长度,修正数据传送过程中的数据地址和数据长度。
5. 在数据块传送结束时,给出DMA操作完成的信号。
DMA接口的组成如上图所示。
解释名词:
AR: Address Register,主存地址寄存器。
WC: Word Counter,字计数器。
BR: Buffer Register,数据缓冲寄存器。
DAR: Device Address Register,设备地址寄存器。
这里描述DMA的工作过程。DMA工作过程包括三个阶段:预处理、数据传送和后处理。
首先是预处理。
在DMA接口开始工作之前,CPU必须给它预置一些信息:
给DMA控制逻辑指明数据传送方向是输入还是输出。
向DMA设备地址寄存器送入设备号,并启动设备。
向DMA主存地址寄存器送入交换数据的主存起始地址。
对字计数器赋予交换数据的个数。
上述的预处理工作由CPU执行几条输入输出指令完成,即程序的初始化阶段,这些工作完成后,CPU继续执行原来的程序。DMA传送过程如下图所示:
数据传送
对于数据传送过程,以下分别介绍对于DMA接口的输入操作以及主存从DMA接口输出数据到I/O设备的过程。
DMA方式是以数据块为单位传送的。数据传送的示意图如下:
DMA接口数据传送的工作过程如下。
1. 当设备准备好一个字时,发出选通信号,将该字读到DMA的数据缓冲寄存器中,表示数据缓冲寄存器“满”(如果I/O设备是面向字符的,则一次读入一个字节,组装成一个字)。
2. 与此同时,设备向DMA接口发请求(DREQ)。
3. DMA接口向CPU申请总线控制权 (HRQ)。
4. CPU发回HLDA信号,表示允许将总线控制权交给DMA接口。
5. 将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器写。
6. 通知设备已被授予一个DMA周期(DACK),并为下一个字做准备。
7. 将DMA数据缓冲寄存器的内容送数据总线。
8. 主存将数据总线上的信息写至地址总线指定的存储单元中。
9. 修改主存地址和字计数值。
10. 判断数据块是否传送结束,若未结束,则继续传送;若已结束,(字计数器溢出),则向CPU申请程序中断,标志数据块传送结束。
1. 当DMA数据缓冲寄存器已将输出数据送至I/O设备后,表示数据缓冲寄存器已“空”。(或者说,在新一轮的传送开始前,先清空数据缓冲寄存器)
2. 设备向DMA接口发请求(DREQ)。
3. DMA接口向CPU申请总线控制权(HRQ)。
4. CPU发回HLDA信号,表示允许将总线控制权交给DMA接口使用。
5. 将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器读。
6. 通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备。
7. 主存将相应地址单元的内容通过数据总线读入到DMA的数据缓冲寄存器中。
8. 将DMA数据缓冲寄存器的内容送到输出设备,若为字符设备,则需要将其拆成字符输出。
9. 修改主存地址和字计数值。
10. 判断数据块是否已传送完毕,若未完毕,继续传送;若已传送完毕,则向CPU申请程序中断。
最后是后处理工作。
当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些DMA的结束工作。
综上,也就是说在DMA协议的工作过程中,含有中断操作。就是在最后的后处理操作。
DMA接口有两种主要类型。[210-212]
1. 选择性DMA接口。适用于数据传输率很高的设备。
2. 多路型DMA接口。适用于同时为多个数据传输率不十分高的设备服务。
X 关闭
Copyright © 2015-2022 欧洲字画网版权所有 备案号:沪ICP备2022005074号-23 联系邮箱: 58 55 97 3@qq.com