概述
DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接
内存访问,是一种不经过CPU而直接从内存存取数据的数据交换模式。在DMA
模式下,常见的CPU如图24.1.1只须向DMA控制器下达指令,让DMA控制
器来处理数据的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上
减轻了CPU资源占有率,可以大大节省系统资源。
DMA控制器是一种在系统内部转移数据的独特外设,可以将其视为一种能
够通过一组专用总线将内部和外部存储器与每个具有DMA能力的外设连接起来
的控制器。它之所以属于外设,是因为它是在处理器的编程控制下来执行传输
的。
DMA既可以指内存和外设直接存取数据这种内存访问的计算机技术,又可
以指实现该技术的硬件模块(对于通用计算机PC而言,DMA控制逻辑由CPU
和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯
片内部,一般称为DMA控制器,DMAC)。
图24.1.1常见的CPU
值得注意的是,通常只有数据流量较大(kBps或者更高)的外设才需要支
持DMA能力,这些应用方面典型的例子包括视频、音频和网络接口。
一、基本原理
直接内存访问(DMA)是一种完全由硬件执行I/O交换的工作方式。在这种方式中,DMA控制器从CPU完全接管对总线的控制,
数据交换不经过CPU,而直接在内存和I/O设备之间进行。DMA方式一般用于高速传送成组数据。DMA控制器将向内存发出地址和控
制信号,修改地址,对传送的字的个数计数,并且以中断方式向CPU报告传送操作的结束。
DMA方式的主要优点是速度快。由于CPU根本不参加传送操作,因此就省去了CPU取指令、取数、送数等操作。在数据传送过
程中,没有保存现场、恢复现场之类的工作。内存地址修改、传送字个数的计数等等,也不是由软件实现,而是用硬件线路直接实现
的。所以DMA方式能满足高速I/O设备的要求,也有利于CPU效率的发挥。
多种DMA至少能执行以下一些基本操作:
1) 从外围设备发出DMA请求;
2) CPU响应请求,把CPU工作改成DMA操作方式,DMA控制器从CPU接管总线的控制;
3) 由DMA控制器对内存寻址,即决定数据传送的内存单元地址及数据传送个数的计数,并执行数据传送的操作;
4) 向CPU报告DMA操作的结束;
注意:在DMA方式中,一批数据传送前的准备工作,以及传送结束后的处理工作,均由管理程序承担,而DMA控制器仅负责数据传送
的工作。
二、传送方式
DMA技术的出现,使得外围设备可以通过DMA控制器直接访问内存,与此同时,CPU可以继续执行程序。DMA控制器与CPU分
时使用内存通常采用以下三种方法:
1.停止CPU访问内存
当外围设备要求传送一批数据时,由DMA控制器发一个停止信号给CPU,要求CPU放弃对地址总线、数据总线和有关控制总线
的使用权。DMA控制器获得总线控制权以后,开始进行数据传送。在一批数据传送完毕后,DMA控制器通知CPU可以使用内存,并把
总线控制权交还给CPU。在这种DMA传送过程中,CPU基本处于不工作状态或者说保持状态。这种传送方式的时间图如下:
|