哈工大计算机组成原理第五章下(二)——>DMA方式

发布于:2022-10-26 ⋅ 阅读:(708) ⋅ 点赞:(0)

哈工大计算机组成原理课程
b站
mooc
大纲:
在这里插入图片描述

输入输出系统下(二)——DMA(直接存储器访问)方式

一、DMA方式的特点

1. DMA和程序中断两种方式的数据通路

  • 中断方式需要将数据先暂时寄存在CPU的某一个寄存器中,仍然需要CPU的介入
  • DMA方式则是通过DMA接口使得IO设备直接和主存进行数据传输,而不通过CPU
    在这里插入图片描述

2. DMA与主存交换数据的三种方式

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

在这里插入图片描述

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

在这里插入图片描述

  1. DMA与CPU交替访问
    不太实用
    速度较快,不需要建立申请权
    在这里插入图片描述

二、DMA接口的功能和组成

1. DMA接口功能

  1. 向CPU申请DMA传送
  2. 处理总线控制权的转交
  3. 管理系统总线、控制数据传送
  4. 确定数据传送的首地址和长度
    修正传送过程中的数据的长度和地址
  5. 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传送过程

  1. 预处理
    通过几条输入输出指令预设置:
    • 通知DMA控制逻辑传送方向(输入/输出)
    • 设备地址——>DMA 的DAR
    • 主存地址——>DMA的AR
    • 传送字数——>DMA的WC
  2. 数据传送
    数据传送过程(输入):
    在这里插入图片描述

数据传送过程(输出):
在这里插入图片描述

  1. 后处理
  • 校验送入主存的数据是否正确
  • 是否继续使用DMA进行数据传送
  • 传送过程是否正确,错误则转诊断程序

由中断服务程序完成

流程:
在这里插入图片描述

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

  1. 具有公共请求线的DMA请求(与总线仲裁的串行连接方法相似)
  • DMA接口通过地址线和数据线与主存相连,同时所有的DMA接口共享一条DMA请求线,这条请求线是输送给CPU的
  • 进行DMA响应时,各个DMA接口也是有优先级的。CPU通过一条查询线一个一个接口的进行查询,距离CPU近的优先级就高
    在这里插入图片描述
  1. 独立的DMA请求(类似总线仲裁的独立请求方式)
  • 每一个DMA接口和地址线和数据线进行连接
  • 每一个DMA接口都有独立的DMA请求信号和DMA响应信号,排队工作在CPU内部完成

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

中断方式 DMA方式
数据传送方式 中断服务程序 硬件
响应时间 指令执行结束 存取周期结束
处理异常情况 不能
中断请求 传送数据 后处理
优先级

DMA直接和主存交互,一般连接高速设备,优先级高

四、DMA接口的类型

  1. 选择型
    在物理上连接多个设备
    在逻辑上只允许连接一个设备
    在这里插入图片描述

  2. 多路型
    物理上连接多个设备
    逻辑上允许连接多个设备同时工作

    但数据传输时也只能有一个设备与内存进行数据传输
    在数据准备阶段,可以有多个设备同时进行数据准备

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

在这里插入图片描述

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

微信公众号

今日签到

点亮在社区的每一天
去签到