zoukankan      html  css  js  c++  java
  • DMA 内存存取原理

    DMA直接内存存取原理   

    DMADMA直接内存存取原理是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。   

    要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。   

    但是采用中断传送有它的缺点,对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。

    DMA在外设与内存间直接进行数据交换,而不通过CPU,这样数据传送的速度就取决于存储器和外设的工作速度。   

    通常系统的总线是由CPU管理的。在DMA方式时,就希望CPU把这些总线让出来,即CPU连到这些总线上的线处于第三态--高阻状态,而由DMA控制器接管,控制传送的字节数,判断DMA是否结束,以及发出DMA结束信号。

    DMA控制器必须有以下功能:   

    1. 能向CPU发出系统保持(HOLD)信号,提出总线接管请求;   

    2. 当CPU发出允许接管信号后,负责对总线的控制,进入DMA方式;   

    3. 能对存储器寻址及能修改地址指针,实现对内存的读写操作;   

    4. 能决定本次DMA传送的字节数,判断DMA传送是否结束   

    5. 发出DMA结束信号,使CPU恢复正常工作状态。

    如图是DMA控制器硬件结构示意图。

    DMA的可能引脚说明:   

    数据总线:用于传送数据。   

    地址总线:用于选择存储器地址。   

    数据传送信号:MEMR为存储器读操作信号,MEMW为存储器写操作信号,IOR为外设读操作信号,IOW为外设写操作信号。   

    DRQ:DMA请求信号。是外设向DMA控制器提出要求DMA操作的申请信号。   

    DACK:DMA响应信号。是DMA控制器向提出DMA请求的外设表示已收到请求和正进行处理的信号。   

    HOLD:总线请求信号。是DMA控制器向CPU要求让出总线的请求信号。   

    HLDA:总线响应信号,是CPU向DMA控制器表示允许总线请求的应答信号。

    5.2  DMA工作方式      

    随着大规模集成电路技术的发展,DMA传送已不局DMA直接内存存取原理限于存储器与外设间的信息交换,而可以扩展为在存储器的两个区域之间,或两种高速的外设之间进行DMA传送,如图所示。   

    DMAC是控制存储器和外部设备之间直接高速地传送数据的硬件电路,它应能取代CPU,用硬件完成数据传送的各项功能。   

    各种DMAC一般都有两种基本的DMA传送方式:

    1. 单字节方式:每次DMA请求只传送一个字节数据,每传送完一个字节,都撤除DMA请求信号,释放总线。

    2. 多字节方式:每次DMA请求连续传送一个数据块,待规定长度的数据块传送完以后,才撤除DMA请求,释放总线。   

    在DMA传送中,为了使源和目的间的数据传送取得同步,不同的DMAC在操作时都受到外设的请求信号或准备就绪信号--Ready信号的限制。

    5.3 DMA控制器8237 DMA直接内存存取原理Intel 8237/8237-2是一种高功能的可编程的DMA控制器,采用5MHz的8237-2传送,速度可达到1.6M字节/秒。

    8237的主要功能 8237的DMA传送有以下四种方式:

    1. 单字节传送方式

    2. 数据块传送方式

    3. 请求传送方式

    4. 级连方式

    有一个结束处理的输入信号EOP,允许外界用此输入端结束DMA传送或重新初始化。

    8237可以级连,任意扩展通道数。

  • 相关阅读:
    国外大学公开课
    普瑞马法则
    在一个整数区间里产生一组不重复的随机数
    arm架构下树莓派 运行javafx流程
    Windows 如何在cmd命令行中查看、修改、删除与添加环境变量
    我来了!
    IIS替代方案:Visual Studio自带的WebServer
    网络收藏夹DEMO
    Web收藏夹
    LazyGuy的BLOG搬迁至CNBLOGS
  • 原文地址:https://www.cnblogs.com/pjl1119/p/10189450.html
Copyright © 2011-2022 走看看