系列文章目录
第五章 输入输出系统之DMA方式
目录
前言
随着计算机系统的不断发展,I/O设备的数量与种类越来越多,它们与主机的联络方式及信息的交换方式也各不相同,I/O设备与主机交换信息时,共有5种控制方式:程序查询方式、程序中断方式、直接存储器存取方式(DMA)、I/O通道方式、I/O处理机方式。我们这主要向大家简单讲解一下DMA这种方式,其余方式如果感兴趣可以自行查阅进行了解。
一、什么是DMA?
DMA全称直接存储器存取(Direct Memory Access),他是一种数据传输方式,特点是I/O设备与主存之间有一条直接数据通路,可以在不占用CPU资源的情况下,直接将数据从外部设备(如硬盘、网卡等)传输到内存中,或从内存中传输到外部设备中。这种方式可以大大提高数据传输的效率。在计算机内部,DMA通常由DMA控制器来管理和实现。
二、DMA方式的特点
1.交换数据的三种方法及其优缺点
在DMA方式中,由于DMA接口与CPU共享主存,这就有可能出现两者争用主存的冲突。为了有效地分时使用主存,通常DMA与主存交换数据时采用如下三种方法
(1)停止CPU访问主存
当外设需要传送一批数据时,便会由DMA接口向CPU发一个停止信号,要求CPU放弃总线的使用权,交给DMA。在DMA接口获得总线控制权后,开始进行数据传送,在数据传送结束后,DMA接口通知CPU可以使用主存,并把总线控制权交还给CPU。

方式优缺点:
这种方式的优点在于控制简单,适用于数据传输率很高的I/O设备实现成组数据的传送,缺点是DMA接口在访问主存时,CPU处于不工作状态或保持状态,未能充分发挥CPU对主存的利用率。
(2)周期挪用(或周期窃取)
注:此周期指的是访存周期
每当I/O设备发出DMA请求时,I/O设备便挪用或窃取总线占用权的一个或多个主存周期,不请求时,CPU继续访问主存。
I/O设备请求DMA传送会遇到三种情况
- CPU此时不访存。I/O设备不会与CPU发生冲突
- CPU正在访存。此时必须等待存取周期结束,再获取总线占有权
- CPU与DMA同时请求访存。存在访问冲突,但是I/O访存优先于CPU访存,以防I/O设备不立即访问主存就可能丢失数据。这样做就意味着CPU在执行访问主存指令过程中插入了DMA请求。

方式优缺点:
这种方式即实现了I/O传送,又较好地发挥了主存与CPU的效率,是一种广泛采用的方法。
(3)DMA与CPU交替访问
这种方法适用于CPU的工作周期比主存存取周期长的情况。
这种方式不需要总线使用权的申请、建立和归还过程,总线使用权是通过C1和C2分别控制的。CPU与DMA接口各自有独立的访存地址寄存器、数据寄存器和读/写信号。实际上总线变成了在C1和C2控制下的多路转化器,具有很高的DMA传送速率。

优缺点:
不需要DMA来申请建立和归还总线使用权。硬件逻辑相比于上述两方法变得更为复杂。在DMA和CPU交替访问时,如果DMA和CPU同时访问一个地址,可能会产生冲突,导致数据传输失败。
三、DMA接口的功能与组成

部件介绍:
注:
DACK(Dma ACKnowledge DMA响应信号)
DREQ(Dma REQuest DMA请求信号)
HRQ(Hold ReQuest 保持请求信号)
HLDA(HoLD Acknowledge 保持响应信号)
AR(Address Register 主存地址寄存器)
用于存放主存中需要交换数据的地址。
WC(Word Counter 字计数器)
用于记录传送数据的总字数,通常以交换字数的补码值预置。
BR(Buffer Register 数据缓冲寄存器)
用于暂存每次传送的数据。通常DMA接口与主存之间采用字传送,而DMA与设备之间可能是字节或位传送。因此DMA接口中还可能包含装配和拆卸字信息的硬件逻辑。如:数据移位缓冲寄存器、字节计数器等。
DMA控制逻辑
负责管理DMA的传输过程,由控制电路、时序电路及命令状态控制寄存器等组成。
中断机构
当字计数器溢出(全"0")时,表示一批数据交换完毕,由"溢出信号"通过中断机构向CPU提出中断请求,请求CPU作DMA操作的后处理。
DAR(Device Address Register 设备地址寄存器)
用以存放I/O设备的设备码或表示设备信息存储区的寻址信息,如磁盘数据所在的区号、盘面号和柱面号。
四、DMA的工作过程
1.DMA传送过程
DMA的数据传送过程分为预处理、数据传送和后处理3个阶段
(1)预处理
在DMA接口开始工作之前,CPU必须给它预置如下信息。
- 通知DMA控制逻辑传送方向(写入\读出)
- 向DAR送入设备号、并启动设备
- 向AR送入交换数据的主存起始地址
- 将交换数据的个数发送到WC当中
(2)数据传送
DMA方式是以数据块为单位传送的。对于数据的传送我们前面讲了停止CPU访问主存、周期挪用与DMA与CPU交替访问三种方式,这里我们以广泛使用的周期挪用的DMA方式为例,其数据传送的流程图如下

以输出数据为例:
①当设备准备好一个字时,发出选通信号,将该字读到BR中,表示BR"满"(如果I/O设备是面向字符的,则一次读入一个字节,组装成一个字)。
②设备向DMA接口发送DREQ请求
③DMA接口向CPU申请总线控制权(HRQ)
④CPU发回HLDA信号,表示允许将总线控制权交给DMA接口使用。
⑤将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器读。
⑥通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备。
⑦主存将相应地址单元的内容通过数据总线读入到DMA的BR中,将BR中的内容送到输出设备(若为字符设备,则需将其拆成字符输出),然后修改主存地址和字计数值。
⑧判断数据块是否已传送完毕,若未完毕,继续传送;若已传送完毕,则向CPU申请程序中断。
(3)后处理
当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些DMA的结束工作,主要为以下三操作,由中断服务程序完成:
- 校验送入主存的数是否正确
- 是否继续用DMA
- 测试传送过程是否正确,错则转诊断程序
2.DMA接口与系统的连接方式
DMA接口与系统的连接方式有两种,可结合总线判优控制中的链式查询方式与独立请求方式进行阅读。
(1)具有公共请求线的DMA请求
若干个DMA接口通过一条公用的DMA请求线向CPU申请总线控制权。CPU发出响应信号后用链式查询方式通过DMA接口,第一个被选中的获得总线控制权。
(2)独立的DMA请求
每一个DMA接口各有一对独立的DMA请求线和DMA响应线。每个DMA接口可以独立发送请求,由CPU的优先级判别机构裁决首先响应哪个设备。
五、DMA的接口类型
1.选择型DMA接口
特点:
在物理上可连接多个设备,在逻辑上只允许连接一个设备。
在某一时间内,DMA接口只能为一个设备服务,关键是在预处理时将所选设备的设备号送入设备地址寄存器。
2.多路型DMA接口
特点:
在物理上可连接多个设备,在逻辑上允许多个设备同时工作
各个设备采用字节交叉的方式通过DMA接口进行数据传送。每个与它连接的设备都设置了一套寄存器,分别存放各自的传送参数。
DMA方式与程序中断方式的比较
中断方式 | DMA方式 | |
(1)数据传送 | 程序 | 硬件 |
(2)响应时间 | 指令执行结束 | 存取周期结束 |
(3)处理异常情况 | 能 | 不能 |
(4)中断请求 | 传送数据 | 后处理 |
(5)优先级 | 低 | 高 |
总结
本文为作者学习笔记,参考书本与网络资源。本文简单的讲解了一下I/O设备与主机进行信息交换的DAM方式。如果能帮助到您一点点,我将感到十分的开心。如果文中有错误,希望大家能给我指出一下啦!毕竟新手还是有很多知识缺陷的。感谢!对于错误也请见谅。