目录
为什么采用 DMA 传送方式?
中断方式 消除了程序查询方式中 CPU 空闲等待的现象,并且在没有中断处理任务时,CPU 和外设可以并行工作。但在中断响应和执行中断服务程序时仍然需要依靠 CPU 来完成。为了解决高速设备与主存间的大数据量传输问题,因此采用 DMA 的传送方式。
DMA(Direct Memory Access)即直接存储器访问,直接依靠硬件系统来控制主存与外部设备之间进行数据传输,在传送期间不需要 CPU 执行程序来干预,在传送结束后通常用中断方式通知 CPU 。
因为数据传输是直接由硬件控制实现的,不依靠执行程序指令来实现,所以在 DMA 传送期间不需要 CPU 执行程序来控制干预。
(考判断题)CPU 只是在传送期间不干预,但在传送之前和传送之后是要干预的。
DMA 传送过程:
主从设备
申请并掌握总线控制权的一方称为 “主设备”,另一方则被称为 “从设备”。
注意:区别主设备与从设备身份差异的基本依据在于谁申请并掌握总线控制权,并不在于谁发送数据、谁接收数据,主设备可以发送数据也可以接收数据。反之,从设备也一样。
不影响 CPU 程序的执行 —— 不存在访存冲突。
举例、前提:有指令在 Cache 中等着 CPU 去执行。若 Cache 中没有指令或者没有 Cache,CPU 肯定会需要利用系统总线去取指,那么 DMA 占用总线就会影响到 CPU 的工作。考试时忽略模型机没有 Cache 这一事实。
DRAM 的刷新操作是对存储内容按行读出,可视为存储器内部的数据批量传输。因此,可以采用 DMA 方式实现。将每次刷新请求当成 DMA 请求,CPU 在刷新周期中让出系统总线。DMA 控制器掌控总线后,发行地址、发读信号。一个存储周期刷新一行,一行刷新完立马将总线还给 CPU。
(1)DMA 的初始化
在传送之前,CPU 需要事先向 DMA 控制器送出有关的控制信息。
(2)DMA 的数据传送方式
CPU 响应 DMA 请求是在一个总线周期结束时。
在传送期间,CPU 停止访问主存,无法执行需要占用总线的指令。
① 单字传送方式
DMA 请求获得批准后,CPU 让出一个总线周期用于字或字节的传送。结束后, DMA 控制器归还总线控制权,CPU 再重新判断下一个总线周期的总线控制权是 CPU 保留,还是继续响应一次新的 DMA 请求。这种方式称为单字传送方式,又称为周期挪用或周期窃取。
② 块传送方式/成组连续传送方式
DMA 请求获得批准后,DMA 控制器掌管总线控制权,连续占用若干个总线周期,进行成组连续的批量传送,直到批量传送结束,才将总线的控制权交还给 CPU。这种方式称为成组连续传送方式。
多路型 DMA 控制器:
DMA 控制器的功能
① 接收 CPU 初始化信息(主存首址、传送方向、交换量)—— 初始化
② 接收外设的 DMA 请求,判优,向 CPU 申请总线 —— 传送前
③ 接管总线权,发总线地址、读/写命令,并向 I/O 接口发响应信号 —— 传送期间
④ 向 CPU 撤销请求,并向 I/O 接口发结束信号 —— 传送结束
DMA 控制器控制 DMA 传送的起始和终止:DMA 控制器内部有一个计数器,只有 DMA 控制器知道传送是否结束。
接口的功能
① 接收 CPU 初始化信息(I/O 设备的寻址信息)—— 初始化
② 向 DMA 控制器发请求 —— 传送前,外设准备完毕
③ 向总线传送数据 —— 传送期间
④ 向 CPU 发中断请求 —— 传送结束
有需要才向 CPU 发中断请求,没有就不发。
Q:DMA 包含哪四个阶段?各阶段分别完成哪些操作?
A:四个阶段如下: