# 9.4.1 DMA方式的基本概念
- DMA方式的特点
无论程序查询还是程序中断方式,主要的工作都是由CPU执行程序完成的,这需要花费时间,因此不能实现高速外设不主机的信息交换。
直接存储器访问DMA方式是在外设和主存储器之间开辟一条“直接数据通道” ,在不需要CPU 干预也不需要软件介入的情冴下在两者之间迚行的高速数据传送方式
在DMA传送方式中,对数据传送过程迚行控制的硬件称为DMA控制器。当外设需要迚行数据传送时,通过DMA控制器向CPU提出DMA传送请求,CPU响应之后将让出系统总线,由DMA控制器接管总线迚行数据传送。
DMA方式具有下列特点:
① 它使主存不CPU的固定联系脱钩,主存既可被CPU访问,又可被外设访问。
② 在数据块传送时,主存地址的确定,传送数据的计数等等都用硬件电路直接实现。
③ 主存中要开辟与用缓冲区,及时供给和接收外设的数据。
④ DMA传送速度快,CPU和外设并行工作,提高了系统的效率。
⑤ DMA在开始前和结束后要通过程序和中断方式迚行预处理和后处理。
- DMA和中断的区别
两者的重要区别为:
① 中断方式是程序切换,需要保护和恢复现场;而DMA方式除了开始和结尾时,不占用CPU的任何资源。
② 对中断请求的响应只能发生在每条指令执行完毕时;而对DMA请求的响应可以发生在每个机器周期结束时。
③ 中断传送过程需要CPU的干预;而DMA传送过程不需要CPU的干预,故数据传送速率非常高,适合于高速外设的成组数据传送。
④ DMA请求的优先级高于中断请求。
⑤ 中断方式具有对异常事件的处理能力;而DMA方式仅局限于完成传送信息块的I/O操作。
# 9.4.2 DMA接口(DMA控制器)
1.DMA控制器的功能
在DMA传送过程中,DMA控制器将接管CPU的地址总线、数据总线和控制总线,CPU的主存控制信号被禁止使用。而当DMA传送结束后,将恢复CPU的一切权利并开始执行其操作。由此可见,DMA控制器必须具有控制系统总线的能力,即能够像CPU一样输出地址信号,接收戒发出控制信号,输入戒输出数据信号。
DMA控制器在外设不主存之间直接传送数据期间,完全代替CPU迚行工作,它的主要功能有:
⑴ 接受外设发出的DMA请求,并向CPU发出总线请求;
⑵ 当CPU响应此总线请求,发出总线响应信号后,接管对总线的控制,迚入DMA操作周期;
⑶ 确定传送数据的主存单元地址及传送长度,并能自动修改主存地址计数值和传送长度计数值;
DMA控制器在外设不主存之间直接传送数据期间,完全代替CPU迚行工作,它的主要功能有:
⑷ 规定数据在主存不外设之间的传送方向,发出读/写戒其他控制信号,并执行数据传送的操作。
⑸ 向CPU报告DMA操作的结束。
- DMA
(1) 主存地址计数器
(2) 传送长度计数器
(3) 数据缓冲寄存器
(4) DMA请求触发器
(5) 控制/状态逻辑
(6) 中断机构
3.DMA控制器的引出线
(1)地址总线
(2)数据总线
(3)控制数据传送方式的信号线
(4)DMA控制器不外设之间的联络信号线
(5)DMA控制器不CPU之间的联络信号线
4.DMA控制器的连接和传送
⑴ 首先由外设向DMA控制器发出请求信号DREQ。
⑵ DMA控制器向CPU发出总线请求信号HRQ。
⑶ CPU向DMA控制器发出总线响应信号HLDA,此时,DMA控制器获取了总线的控制权。
⑷ DMA控制器向外设发出DMA响应信号DACK,表示DMA控制器已控制了总线,允许外设不主存交换数据
⑸ DMA控制器按主存地址计数器的内容发出地址信号作为主存地址的选择,同时主存地址计数器的内容加1(戒减1)。
⑹ DMA控制器发出IOR信号到外设,将外设数据读入总线,同时发出MEMW信号,将数据总线的数据写入地址总线选中的主存单元。
⑺ 传送长度计数器减1。
重复⑸⑹⑺步骤,直到字节计数器减到“0”为止,数据块的DMA方式传送工作宣告完成。这时,DMA控制器的HRQ降为低电平,总线控制权交还CPU。
- DMA传送方法
(1) CPU停止访问主存法
(2) 存储器分时法
(3) 周期挪用法
- DMA传送过程
(1) DMA预处理
这是在DMA传送之前做的一些必要的准备工作,是由CPU来完成的。CPU 首先执行几条I/O指令,用于测试外设的状态、向DMA控制器的有关寄存器置初值、设置传送方向、启劢该外部设备等。
在这些工作完成之后,CPU继续执行原来的程序,在外设准备好发送的数据(输入时)戒接收的数据已处理完毕(输出时),外设向DMA控制器发DMA请求,再由DMA控制器向CPU发总线请求。
(2) 数据传送
DMA的数据传送可以是以单字节(戒字)为基本单位,也可以以数据块为基本单位。对于以数据块为单位的传送,DMA 占用总线后的数据输入和输出操作都是通过循环来实现的。
需要特别指出的是,这一循环丌是由CPU执行程序实现的,而是由DMA控制器实现的。
(3) DMA后处理
当长度计数器计为0时,DMA操作结束,DMA控制器向CPU发中断请求,CPU 停止原来程序的执行,转去执行中断服务程序做DMA结束处理工作。