计算机内存与直接内存访问技术详解
1. 直接内存访问(DMA)概述
在计算机系统中,直接内存访问(DMA)是一种重要的数据传输机制。以STM32H7系列的DMA传输为例,每次DMA传输由源地址和目标地址确定。每个数据流都有一对寄存器来存储这些地址,分别是外设地址寄存器(SxPAR)和内存地址寄存器(SxMAR)。
此外,每次DMA传输还由传输大小和传输模式定义。每个数据流都有其数据数量寄存器(SxNDR),用于存储传输大小。STM32H7系列的DMA控制器可以执行两种传输类型:正常类型和循环类型。FIFOs允许独立的源和目标传输宽度以及突发传输。每次DMA传输在总线上由两个事务组成:从外设数据寄存器或内存位置加载数据,以及将数据存储到外设数据寄存器或内存位置。
2. 总线主控DMA
传统的第三方DMA需要一个独立的DMA控制器,该控制器内置于主板芯片组中,用于在外部设备(第一方)和系统RAM(第二方)之间移动数据。这种DMA控制器由多个外设设备共享,因此被视为第三方DMA。而且,大多数现代计算机系统中使用的“直传”DMA传输每次需要两个内存事务:一个从源加载数据,一个将数据存储到目标。
总线主控DMA(第一方DMA)则是一种更优的DMA传输方式。现代计算机系统中的最新I/O设备可以充当总线主控,即每个设备可以直接访问总线上的任何其他I/O设备或内存。每个现代I/O设备都包含自己的集成DMA控制器,不与其他I/O设备共享。支持总线主控技术的外设设备能够在无需CPU或第三方DMA控制器干预的情况下,在系统内存和外设之间移动数据。
总线主控DMA比第三方DMA传输数据快得多,因为只需要一半的总线周期。第三方DMA需要DMA
超级会员免费看
订阅专栏 解锁全文
8163

被折叠的 条评论
为什么被折叠?



