文章目录
输入输出系统下(二)——DMA(直接存储器访问)方式
一、DMA方式的特点
1. DMA和程序中断两种方式的数据通路
- 中断方式需要将数据先暂时寄存在CPU的某一个寄存器中,仍然需要CPU的介入
- DMA方式则是通过DMA接口使得IO设备直接和主存进行数据传输,而不通过CPU

2. DMA与主存交换数据的三种方式
- 停止CPU访问主存
- 在数据交换的过程中,CPU就放弃了对总线的控制权和对主存的访问权,总线的控制权和对主存的访问权被交给了DMA接口。所以控制简单,适合大量的数据进行传输
- CPU处于不工作状态或保持状态, 但是在数据传输过程中,如果CPU内的指令缓冲器中有指令,或指令被取入到Cache,CPU可以继续工作,只要这期间不访问主存即可;没有指令就保持状态
- 没有充分发挥CPU对主存的利用率

- 周期挪用(周期窃取)
- 指的是访存周期
- 如果DMA准备好了数据传输,就通过申请建立总线使用期,占用一个或几个内存的访问周期,完成数据的传输;
- 在DMA没有准备好,DMA接口会放弃总线使用权、内存访问权
- DMA访问内存的3种可能
- CPU此时不访存:这时,总线使用权、内存访问权就可以直接给DMA
- CPU正在访存:DMA等待
- CPU与DMA同时请求访存:DMA优先,CPU放弃,因为DMA连接的是高速设备,不及时响应数据可能会流失
- 相比来说,主存的利用率提高了,“内存墙”

- DMA与CPU交替访问
不太实用
速度较快,不需要建立申请权

二、DMA接口的功能和组成
1. DMA接口功能
- 向CPU申请DMA传送
- 处理总线控制权的转交
- 管理系统总线、控制数据传送
- 确定数据传送的首地址和长度
修正传送过程中的数据的长度和地址 - DMA传送结束后,给出操作完成信号
2. DMA接口组成
- 假设通过单总线的方式,DMA要和主存、CPU交互
- AR:DMA接口要知道传输数据在主存中的地址,要有一个地址寄存器AR
- WC:要知道传输的数据量,需要一个计数器WC(Word Counter,一个字一个字地传输)进行传输的数据量的计数
- 假设传输数据时,是从低地址开始,每次传输的数据单位和编址单位相同,每完成一个数据的输入或输出,需要对地址寄存器AR进行修改,+1;WC字数计数器,也要+1
- BR:还要有数据缓冲区BR,传输的数据要暂存到这里
- DAR:设备地址寄存器DAR:提供给设备选择电路使用,看这次访问的设备是不是当前这个DMA当前连接的设备,把这次访问的设备的地址保存到DAR中;对硬盘进行访问,还可以保存磁道、扇区号等
- AR通过地址线把要访问的内存地址传输给主存,DMA接管了总线权。AR、WC、DAR的值通过数据线进行设置,传输的数据也通过数据线传输给BR,再传输给外部设备
- DMA控制逻辑:输入输出过程要由DMA控制逻辑控制:
- 外部设备要使用DMA来传输数据,要向它发出请求信号,它还要给外部设备一个应答信号DACK;
- DMA要想使用总线,占用主存,要向CPU发出总线使用的请求信号HRQ,CPU给出应答信号HLDA
- 中断机构:用于数据传输完成后对后续工作进行处理,WC一旦变成0,表示数据传输结束,WC会向中断机构发信号,给里面的中断请求触发器置为1,中断机构向CPU发出中断请求,再由CPU完成数据传输完之后的处理工作

三、DMA的工作过程
1. DMA传送过程
- 预处理
通过几条输入输出指令预设置:- 通知DMA控制逻辑传送方向(输入/输出)
- 设备地址——>DMA 的DAR
- 主存地址——>DMA的AR
- 传送字数——>DMA的WC
- 数据传送
数据传送过程(输入):

数据传送过程(输出):

- 后处理
- 校验送入主存的数据是否正确
- 是否继续使用DMA进行数据传送
- 传送过程是否正确,错误则转诊断程序
由中断服务程序完成
流程:

2. DMA接口与系统的连接方式
- 具有公共请求线的DMA请求(与总线仲裁的串行连接方法相似)
- DMA接口通过地址线和数据线与主存相连,同时所有的DMA接口共享一条DMA请求线,这条请求线是输送给CPU的
- 进行DMA响应时,各个DMA接口也是有优先级的。CPU通过一条查询线一个一个接口的进行查询,距离CPU近的优先级就高

- 独立的DMA请求(类似总线仲裁的独立请求方式)
- 每一个DMA接口和地址线和数据线进行连接
- 每一个DMA接口都有独立的DMA请求信号和DMA响应信号,排队工作在CPU内部完成
3. DMA方式和程序中断方式的比较
| 中断方式 | DMA方式 | |
|---|---|---|
| 数据传送方式 | 中断服务程序 | 硬件 |
| 响应时间 | 指令执行结束 | 存取周期结束 |
| 处理异常情况 | 能 | 不能 |
| 中断请求 | 传送数据 | 后处理 |
| 优先级 | 低 | 高 |
DMA直接和主存交互,一般连接高速设备,优先级高
四、DMA接口的类型
选择型
在物理上连接多个设备
在逻辑上只允许连接一个设备

多路型
物理上连接多个设备
逻辑上允许连接多个设备同时工作但数据传输时也只能有一个设备与内存进行数据传输
在数据准备阶段,可以有多个设备同时进行数据准备
- 通道是一种小型的DMA接口,一个通道包含若干个子通道,每一个子通道都有主存地址寄存器、设备地址寄存器、字计数器,这些子通道可以控制多个设备。
- 设备进行数据传输时,CPU执行到输入输出指令,要控制某个设备进行输入输出,就对相应的子通道的寄存器进行设置,设置完之后,如果碰到下一个输入输出指令,这俩设备使用的是不同的子通道,就可以对另一个子通道进行设置。
- 多个外部设备可以并行的进行数据准备,准备好了,通过子通道向通道提出数据传输请求,不同设备的数据传输就是串行进行的
- 多路型DMA接口的工作原理:
通道虽然连接了多个设备,但仍然有很多时间是没有用上的,还可以连接更多的设备。 

本文含有隐藏内容,请 开通VIP 后查看
