计算机组成原理 第四章(输入输出系统)—第六节(DMA方式)

 写在前面:

  1. 本系列笔记主要以《计算机组成原理(唐朔飞)》为参考,大部分内容出于此书,笔者的工作主要是挑其重点展示,另外配合下方视频链接的教程展开思路,在笔记中一些比较难懂的地方加以自己的一点点理解(重点基本都会有标注,没有任何标注的难懂文字应该是笔者因为强迫症而加进来的,可选择性地忽略)。
  2. 视频链接:计算机组成原理(哈工大刘宏伟)135讲(全)高清_哔哩哔哩_bilibili

一、概述

1、DMA方式的特点

(1)下图示意了DMA方式与程序中断方式的数据通路,主存和DMA接口之间只有一条数据通路,因此主存和设备交换信息时是不需要通过CPU的,CPU也不需要暂停现行程序为设备服务,省去了保护现场和恢复现场的工作,工作速度比程序中断方式要快不少,这一特点特别适合于高速I/O或辅存与主存之间的信息交换

(2)若出现高速I/O(通过DMA接口)和CPU同时访问主存的情况,CPU必须将总线(如地址线、数据线)的占有权让给DMA接口使用,即DMA采取周期窃取的方式占用一个存取周期。

2、DMA接口与CPU争用主存的三种解决方法

(1)停止CPU访存:

        当外设要求传送一批数据时,由DMA接口向CPU发一个停止信号,要求CPU放弃地址线、数据线和有关控制线的使用权,DMA接口获得总线控制权后开始进行数据传送,在数据传送结束后DMA接口通知CPU可以使用主存,并把总线控制权交回给CPU

        这种方式的优点是控制简单,适用于数据传输率很高的I/O设备实现成组数据的传送;缺点是DMA接口在访问主存时,CPU基本上处于不工作状态或保持原状态,而且即使I/O设备高速运行,两个数据之间的准备间隔也总大于一个存取周期,因此CPU对主存的利用率并没得到充分发挥

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

        每当I/O设备发出DMA请求时,I/O设备便挪用或窃取总线占用权一个或几个存取周期,而DMA不请求时,CPU仍继续访问主存

        I/O设备请求DMA传送会遇到三种情况:

        ①CPU此时不需要访存(比如CPU正在执行耗时较长的乘法指令),I/O设备与CPU不发生冲突

        ②I/O设备请求DMA传送时,CPU正在访问主存,此时必须待存取周期结束,CPU才能将总线占有权让出

        ③I/O设备要求访问主存时,CPU也要求访问主存,二者产生访问冲突,此时I/O访存优先于CPU访存,因为I/O不立即访问主存就可能会丢失数据,这时I/O要窃取一两个存取周期,意味着CPU在执行访问主存指令过程中插入了DMA请求,并挪用了一两个存取周期,使CPU延缓了一两个存取周期再访问主存

(3)DMA与CPU交替访问:

        这种方法适合于CPU的工作周期比主存存取周期长的情况,CPU的工作周期可分为两个分周期,其中一个周期专供DMA访存,另一个周期专供CPU访存,CPU本身也不会停止主程序的运行,不会进入等待状态。

        这种方式不需要总线使用全的申请、建立和归还过程,总线使用权是通过两个分周期分别控制的。

二、DMA接口的功能和组成

1、DMA接口的功能

(1)向CPU申请DMA传送。

(2)在CPU允许DMA工作时,处理总线控制权的转交,避免因进入DMA工作而影响CPU正常活动或引起总线竞争。

(3)在DMA期间管理系统总线,控制数据传送。

(4)确定数据传送的起始地址和数据长度,修正数据传送过程中的数据地址和数据长度。

(5)在数据块传送结束时,给出DMA操作完成的信号。

2、DMA接口的组成

(1)主存地址寄存器(AR)

        AR用于存放主存中需要交换数据的地址在DMA传送数据前,必须通过程序将数据在主存中的首地址送到主存地址寄存器;在DMA传送过程中,每交换一次数据,将地址寄存器的内容加1,直到一批数据传送完毕为止

(2)字计数器(WC)

        WC用于记录传送数据的总字数,通常以交换字数的补码值预置。在DMA传送过程中,每传送一个字,字计数器加1,直到计数器为0,即最高位产生进位时,表示该批数据传送完毕(若交换字数以原码值预置,则每传送一个字,字计数器减1,直到计数器为0时,表示该批数据传送结束),DMA接口随即向CPU发中断请求信号。

(3)数据缓冲寄存器(BR)

        BR用于暂存每次传送的数据。通常DMA接口与主存之间采用字传送,而DMA与设备之间可能是字节或位传送,因此DMA接口中还可能包括有装配或拆卸字信息的硬件逻辑,如数据移位缓冲寄存器、字节计数器等。

(4)DMA控制逻辑

        DMA控制逻辑负责管理DMA的传送过程,由控制电路、时序电路及命令状态控制寄存器等组成。每当设备准备好一个数据字(或一个字传送结束),就向DMA接口提出申请(DERQ),DMA控制逻辑便向CPU请求DMA服务,发出总线使用权的请求信号(HRQ),待收到CPU发出的响应信号HLDA后,DMA控制逻辑便开始管理DMA传送的全过程,包括对主存寄存器和字计数器的修改、识别总线地址、指定传送类型(输入或输出)以及通知设备已经被授予一个DMA周期(DACK)等

(5)中断机构

        当字计数器溢出(全“0”)时,表示一批数据交换完毕,由“溢出信号”通过中断机构向CPU提出中断请求,请求CPU作DMA操作后的处理。需要说明的是,这里的中断不是为了传送数据,只是为了报告一批数据传送结束

(6)设备地址寄存器(DAR)

        DAR存放I/O设备的设备码或表示设备信息存储区的寻址信息,如磁盘数据所在的区号、盘面号和柱面号,具体内容取决于设备的数据格式和地址的编址方式。

三、DMA的工作过程

1、DMA传送过程

(1)预处理阶段:

        在DMA接口开始工作之前,CPU必须对其进行配置相关信息

        ①给DMA控制逻辑指明数据传送方向是输入(写主存)还是输出(读主存)

        ②向DMA设备地址寄存器送入设备号,并启动设备

        ③向DMA主存地址寄存器送入交换数据的主存起始地址

        ④对字计数器赋予交换数据的个数

        上述工作由CPU执行几条输入输出指令完成,即程序的初始化阶段,这些工作完成后,CPU继续执行原来的程序。

        当I/O设备准备好发送的数据(输入)或上次接收的数据已经处理完毕(输出)时,它便通过DMA接口向CPU提出占用总线的申请,若有多个DMA同时申请,则按轻重缓急由硬件排队器的判优逻辑决定优先级,待I/O设备得到主存总线的控制权后,数据的传送便由该DMA接口进行管理。

(2)数据传送阶段:

        DMA方式是以数据块为单位传送的,下图所示的示意图,是以周期挪用的DMA方式为例的。

        数据输入的具体过程如下

        ①当设备准备好一个字时,发出选通信号,将该字读到DMA的数据缓冲寄存器中,表示数据缓冲寄存器“满”。

        ②数据缓冲寄存器“满”的同时设备向DMA接口发送请求(DERQ)。

        ③DMA接口向CPU申请总线控制权(HRQ)。

        ④CPU发回HLDA信号,表示允许将总线控制权交给交给DMA接口。

        ⑤将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器写。

        ⑥通知设备已被授予一个DMA周期(DACK),并为交换下一个字节做准备。

        ⑦将DMA数据缓冲寄存器的内容送数据总线。

        ⑧主存将数据总线上的信息写至地址总线指定的存储单元中。

        ⑨修改主存地址和字计数值。

        ⑩判断数据块是否传送结束,若未结束就继续传送,若已结束(字计数器溢出)则向CPU申请程序中断,标志数据块传送结束。

        数据输出的具体过程如下

        ①当DMA数据缓冲寄存器已将输出数据送至I/O设备后,表示数据缓冲寄存器已“空”。

        ②设备向DMA接口发请求(DREQ)。

        ③DMA接口向CPU申请总线控制权(HRQ)。

        ④CPU发回HLDA信号,表示允许将总线控制权交给DMA接口使用。

        ⑤将DMA主存地址寄存器中的主存地址送地址总线,并命令存储器读。

        ⑥通知设备已被授予一个DMA周期(DACK),并为交换下一个字做准备。

        ⑦主存将相应地址单元的内容通过数据总线读入DMA的数据缓冲寄存器中。

        ⑧将DMA数据缓冲寄存器的内容送到输出设备,若为字符设备则需将其拆成字符输出。

        ⑨修改主存地址和字计数值。

        ⑩判断数据块是否传送完毕,若未完毕就继续传送,若已传送完毕(字计数器溢出)则向CPU申请程序中断,标志数据块传送结束。

(3)后处理阶段:

        当DMA的中断请求得到响应后,CPU停止原程序的执行,转去执行中断服务程序,做一些DMA的结束工作,其中包括校验送入主存的数据是否正确、决定是否继续用DMA传送其它数据块(若继续传送则需要再一次对DMA接口进行初始化,反之则停止外设)、测试在传送过程中是否发生错误(若出错则需要转错误诊断程序及处理错误程序)。

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

(1)具有公共请求线的DMA请求方式:若干个DMA接口通过一条公用的DMA请求线向CPU申请总线控制权,CPU发出响应信号,用链式查询方式通过DMA接口,首先选中的设备获得总线控制权。

(2)独立的DMA请求方式:每一个DMA接口各有一对独立的DMA请求线和DMA响应线,它由CPU的优先级判别机构裁决首先响应哪个请求,并在对应的响应线上发出响应信号,获得响应信号的DMA接口便可控制总线与主存传送数据。

3、DMA方式和程序中断方式的比较

(1)从数据传送看,程序中断方式靠程序传送,DMA方式靠硬件传送(硬件的速度普遍较快)。

(2)从CPU响应时间看,程序中断方式是在一条指令执行结束时响应,而DMA方式可在指令周期内的任一存取周期结束时响应

(3)程序中断方式有处理异常事件的能力,DMA则没有

(4)程序中断方式需要中断现行程序,故需保护现场,而DMA方式则不会中断现行程序,也就不需要保护现场

(5)DMA的优先级比程序中断的优先级高

四、DMA接口的类型

1、选择型DMA接口

        选择型DMA接口的主要特点是在物理上可连接多个设备,在逻辑上只允许连接一个设备,即在某一段时间内DMA接口只能为一个设备服务,关键是在预处理时将所选设备的设备号送入设备地址寄存器。

        选择性DMA接口特别适用于数据传输率很高的设备。

2、多路型DMA接口

        多路型DMA接口不仅在物理上可以连接多个设备,而且在逻辑上也允许多个设备同时工作,各个设备采用字节交叉的方式通过DMA接口进行数据传送,每个与DMA接口连接的设备都设置有一套寄存器分别存放各自的传送参数。

        多路型DMA接口特别适用于同时为多个数据传输率不高的设备服务。

  • 34
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zevalin爱灰灰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值