当前位置: 首页 > 资讯 > 正文

DMA接口协议笔记 环球报道

来源:哔哩哔哩    时间:2023-01-19 00:57:05

在没有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接口数据传送的工作过程如下。 

(一)数据从I/O设备输入到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申请程序中断,标志数据块传送结束。

(二)数据从DMA接口输出到I/O设备

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