本文介绍了在嵌入式系统编程中使用直接内存访问(DMA)的用例、优点和缺点。介绍了DMA如何与外设和内存模块交互以提高CPU的运行效率。还将向读者介绍不同的DMA总线访问架构,以及各自的优势。
嵌入式系统的一项常见任务是管理外部输入。管理输入会给处理器带来很多不必要的计算压力,导致有源功率模式下的时间更长,响应时间变慢。为了优化功耗、保持对事件的快速响应以及管理大量连续数据传输,具有DMA的MCU能够提供最佳解决方案。
在涉及外设的系统应用中,微处理器在很多地方都可能成为瓶颈。例如,当管理一个不断发送数据的ADC时,处理器可能会经常被中断,以至于难以完成其他任务。DMA是一种用于移动数据并最大限度地减少处理器参与大型或快速数据事务的方法。可以将DMA控制器视为协处理器,其唯一目的是与内存和外设交互。它支持主处理器成功地管理一个贪婪的外设,专注于另一项任务,甚至在后台进行数据事务时进入睡眠状态而节省电量。例如,在Arm架构上,DMA模块可以在LP2(睡眠)或LP3(运行)模式下运行。这可以在需要延长电池寿命的应用中提供明显的优势,例如可穿戴传感器集线器(sensor hub)和智能手表。
DMA在许多数字系统中很有用,有时甚至需要管理大量的总线流量。它已被用于网卡、显卡,甚至是一些原始的IBM PC。也就是说,将DMA结合到设计中确实有一些权衡取舍。
表1:使用DMA的优点。
表2:使用DMA的缺点。
虽然DMA控制器在节能或加速嵌入式系统方面可以非常有效,但它们的实现并未高度标准化。有多种方案可确保不会与CPU同时授予内部总线访问权限。总线访问方案的目标主要是避免并发访问相同的内存位置,这会导致缓存不一致和逻辑错误。单个DMA控制器通常会被配置为采用其中一种方案,因为使用它们中的每一种可能需要不同的硬件或固件控制。大多数DMA控制器所使用的总线访问方案包括突发、周期窃取和透明三种DMA。
透明DMA一次只能执行一个操作,而且它还必须等待处理器执行指令,在指令中它可以访问所需的数据或地址总线。这种访问限制需要额外的逻辑进行验证,并且这种类型的DMA通常是最慢的。透明DMA在需要额外处理而不需要访问内存总线的应用中可能是有利的。这种情况下的优势是消除了对CPU的节流,因为处理器不必完全停止运行。
表3:DMA类型及其优缺点总结。
图1:DMA操作期间突发DMA的架构图。
突发DMA通过不频繁的大突发发生,其中,DMA控制器会将目标缓冲区所能容纳的尽可能多的数据发送到该缓冲区。DMA控制器会在很短的时间内阻止CPU操作以移动大块内存,然后将总线交还给主CPU,如此重复直到传输完成。突发DMA通常被认为是最快的类型。
图2:DMA操作期间的周期窃取DMA发生在两个CPU周期之间。
相反,单字节传输或周期窃取DMA则会从CPU获取提示,而仅在CPU指令之间执行操作。它在两个CPU周期之间插入一个操作,因此实际上是在“窃取”CPU时间。由于一次只能执行一个操作的限制,它通常比突发DMA慢。
图3:DMA操作期间的透明DMA发生在处理器处理不访问数据或地址总线的任务时。
图4:MAX32660上的DMA控制器架构图。
可以在MAX32660上找到突发DMA控制器的一个示例(见图4)。上面的路径对应数据流,下面的路径则表示高级高性能总线(AHB)和DMA逻辑之间的控制/状态流。DMA控制器可以充当AHB和内存或外设模块之间的缓冲接口,具体取决于它的配置方式。DMA逻辑位于DMA缓冲区和每个外设之间,以在事务期间独立管理每个唯一的外设总线。一次DMA操作最多可以移动32个字节,前提是源/目标缓冲区可以包含这么多数据。该缓冲区最多可容纳16MB,并且除了内部存储器传输外,还可配置为传输或接收I2C、SPI、I2S和UART。编程DMA控制可能因协议而略有不同,但外设事务由DMA控制器专门管理。仲裁器模块用于控制四个DMA通道和CPU之间的总线访问限制,根据优先级系统授予请求。
总之,DMA是现代嵌入式系统的一项重要功能,这些系统需要管理大量传感器并需要实现高吞吐量、高效率和低功耗运行。它的行为就像专用于内存和外设总线事务的协处理器。
对于许多应用来说,使用DMA是必不可少的,从而最大限度地降低功耗并减轻处理器负载。例如,健康和可穿戴设备会处理大量数据吞吐量,但它们还必须在处理敏感数据的同时尽可能多地节省电池电量。ADI在MCU上提供了快速突发DMA架构,适用于低功耗可穿戴设计,例如MAX32660和MAX32670。此外,MAX32666等DARWIN Arm MCU专为集成蓝牙5的可穿戴和物联网应用而构建。这些器件具有两个8通道突发DMA控制器,集成了对基于事件的事务的支持。它们甚至配备了一流的安全硬件,带有安全引导加载程序和信任保护单元(TPU),用于加速ECDSA、SHA-2和AES加密。从早期的IBM PC到网卡,再到现在的安全、低功耗可穿戴设备和物联网设备,DMA是现代数字系统的基本特征。
注:所有图片均由Maxim/ADI提供。
Brandon Hurst是一名硬件和嵌入式固件工程师,在Maxim(现隶属于ADI)的培训和技术服务部工作。他毕业于圣路易斯奥比斯波加州理工大学,获得了电气工程学士学位,并于2021年1月加入Maxim。此前,Brandon曾在Maxim的TTS团队和苹果公司的产品安全工程团队实习。可以通过brandon.hurst@analog.com与他进行联系。
(原文刊登于EDN姊妹网站Embedded,参考链接:Accelerating peripheral monitoring in wearables with DMA,由Franklin Zhao编译。)
本文为《电子技术设计》2023年1月刊杂志文章,版权所有,禁止转载。免费杂志订阅申请点击这里。