DMA方式

系列文章目录

第五章 输入输出系统之DMA方式


目录

系列文章目录

前言

一、什么是DMA?

二、DMA方式的特点

1.交换数据的三种方法及其优缺点

(1)停止CPU访问主存

 (2)周期挪用(或周期窃取)

(3)DMA与CPU交替访问

三、DMA接口的功能与组成

四、DMA的工作过程

1.DMA传送过程

(1)预处理

(2)数据传送

(3)后处理

2.DMA接口与系统的连接方式

(1)具有公共请求线的DMA请求

(2)独立的DMA请求

五、DMA的接口类型

1.选择型DMA接口

2.多路型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。

DMA方式时间示意图
停止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与CPU交替访问方式时间示意图

 优缺点:

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

三、DMA接口的功能与组成

简单的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方式。如果能帮助到您一点点,我将感到十分的开心。如果文中有错误,希望大家能给我指出一下啦!毕竟新手还是有很多知识缺陷的。感谢!对于错误也请见谅。

  • 4
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值