• 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可以级连,任意扩展通道数。

  • 相关阅读:
    iOS 时区问题总结 NSTimeZone
    项目中图片问题
    支付宝支付相关问题汇总
    算法时间计算:logA(N)与O(n)
    UE4 AR开发笔记
    UE4 PostProcessVolume笔记
    cpp typename关键字
    UE4 二维相关
    ATOM基础教程一使用前端插件emmet(16)
    监听浏览器返回上一页
  • 原文地址:https://www.cnblogs.com/pjl1119/p/10189450.html
Copyright © 2020-2023  润新知