【導讀】本文介紹在嵌入式系統程序中使用直接內存訪(fǎng)問(wèn)(DMA)的用例、優(yōu)點(diǎn)和缺點(diǎn)。本文描述了DMA如何與外設和內存模塊交互,以提高CPU的運行效率。還將為讀者介紹不同的DMA總線(xiàn)訪(fǎng)問(wèn)架構,及各自的優(yōu)點(diǎn)。
嵌入式系統執行的一個(gè)常見(jiàn)任務(wù)是管理外部輸入。管理輸入會(huì )給處理器帶來(lái)很多不必要的計算壓力,導致處理器處于有功功率模式下的時(shí)間更長(cháng),響應速度更慢。為了優(yōu)化功率,保持對事件的快速響應以及管理大量數據連續傳輸,具有直接內存訪(fǎng)問(wèn)(DMA)的微控制器可提供更好的解決方案。
直接內存訪(fǎng)問(wèn)(DMA)
在涉及外設的系統應用中,微處理器在許多點(diǎn)可能都會(huì )遭遇瓶頸。例如,在管理一個(gè)不斷發(fā)送數據的ADC時(shí),處理器可能時(shí)常被中斷,導致它很難完成其他任務(wù)。DMA是一種在大型或快速數據處理事務(wù)中移動(dòng)數據和盡量減少處理器參與的方法。您可以將DMA控制器當做一個(gè)協(xié)處理器,它的唯一作用就是與存儲器和外設交互。通過(guò)這種方式,主處理器可以成功管理工作量大的外設,專(zhuān)注于處理其他任務(wù),甚至可以在后臺處理數據時(shí)進(jìn)入睡眠狀態(tài),以節省功率。例如,在A(yíng)rm?架構上,DMA模塊可以在LP2(睡眠)或LP3(運行)模式下運行。對于需要更長(cháng)的電池壽命的應用,例如可穿戴傳感器中樞和智能手表,這具有明顯的優(yōu)勢。
優(yōu)點(diǎn)和缺點(diǎn)
在許多數字系統中,DMA很有用處,有時(shí)甚至用于管理大量總線(xiàn)流量。它還用于網(wǎng)卡、顯卡,甚至一些原始的IBM個(gè)人電腦中。也就是說(shuō),將DMA集成到設計中時(shí),確實(shí)需要進(jìn)行一些權衡考量。
表1. 使用DMA的優(yōu)點(diǎn)
表2. 使用DMA的缺點(diǎn)
總線(xiàn)訪(fǎng)問(wèn)和CPU周期
雖然DMA控制器在節能或加速嵌入式系統方面非常有效,但它們的實(shí)現方案還沒(méi)有高度標準化??梢允褂枚喾N方案來(lái)確保不會(huì )與CPU同時(shí)授予內部總線(xiàn)訪(fǎng)問(wèn)權限??偩€(xiàn)訪(fǎng)問(wèn)方案的主要目標是避免同時(shí)訪(fǎng)問(wèn)相同的存儲器位置,以免發(fā)生緩存區不連續和邏輯錯誤。單個(gè)DMA控制器通常配置為采用這些方案之一,因為使用每種方案可能需要不同的硬件或固件控制。大多數DMA控制器使用的總線(xiàn)訪(fǎng)問(wèn)方案是突發(fā)、周期竊用和透明模式的DMA。
透明DMA一次只能執行一項操作,但是,它也必須等待處理器執行指令,以獲得對所需數據或地址總線(xiàn)的訪(fǎng)問(wèn)。驗證這種訪(fǎng)問(wèn)限制需要使用額外的邏輯,這種類(lèi)型DMA的速度通常最慢。在不需要訪(fǎng)問(wèn)存儲器總線(xiàn)但需要進(jìn)行額外的處理的應用中,透明DMA可能具有優(yōu)勢。在這種情況下,優(yōu)勢在于消除了對CPU的節流,因為處理器無(wú)需完全停止運行。
表3. DMA類(lèi)型及其優(yōu)缺點(diǎn)總結
圖1. DMA運行期間,突發(fā)DMA的架構圖。
突發(fā)DMA是借由不常見(jiàn)的大型突發(fā)事件發(fā)生,在此期間,DMA會(huì )根據緩沖區可以存儲的容量,向目標緩沖區發(fā)送盡可能多的數據。DMA控制器會(huì )在短時(shí)間內阻止CPU運行,以移動(dòng)大量?jì)却?,然后將總線(xiàn)交還給主CPU,并一直重復該過(guò)程,直到傳輸完成。突發(fā)DMA通常被認為是速度最快的類(lèi)型。
圖2. 在DMA運行期間,周期竊用DMA發(fā)生在兩個(gè)CPU周期之間。
相反,單字節傳輸或周期竊用DMA從CPU獲取提示,并且僅在CPU指令之間執行操作。它在兩個(gè)CPU周期之間插入一個(gè)操作,因此實(shí)際上"竊取"了CPU時(shí)間。由于一次只能執行一項操作的限制,它通常比突發(fā)DMA慢。
圖3. 在DMA運行期間,透明DMA在處理器處理不訪(fǎng)問(wèn)數據或地址總線(xiàn)的任務(wù)時(shí)發(fā)生。
突發(fā)DMA架構示例
圖4. MAX32660上的DMA控制器的架構圖。
關(guān)于突發(fā)DMA控制器示例,可以參見(jiàn) MAX32660(參見(jiàn)圖4)。上方路徑對應數據流,下方路徑代表先進(jìn)的高性能總線(xiàn)(AHB)和DMA邏輯之間的控制/狀態(tài)流。DMA控制器可以用作AHB和存儲器或外設模塊之間的緩沖區接口,具體取決于其配置方式。DMA邏輯位于DMA緩沖區和每個(gè)外設之間,用于在處理期間獨立管理每個(gè)唯一的外設總線(xiàn)。DMA運行一次可以移動(dòng)多達32個(gè)字節,只要源/目標緩沖區中可以包含這么多數據。緩沖區最高可存儲16 MB,除了內部存儲器傳輸外,還可以配置為發(fā)送或接收I2C、SPI、I2S和UART。編程DMA控制可能會(huì )因協(xié)議的不同而略有不同,但外設事務(wù)完全由DMA控制器管理。仲裁模塊控制四個(gè)DMA通道和CPU之間的總線(xiàn)訪(fǎng)問(wèn)限制,根據優(yōu)先級系統批準請求。
現代DMA選項
總之,對于管理大量傳感器并要求高吞吐量、高效率和低功耗操作的現代嵌入式系統來(lái)說(shuō),DMA是一個(gè)關(guān)鍵特性。它就像是一個(gè)專(zhuān)門(mén)用于處理存儲器和外設總線(xiàn)事務(wù)的協(xié)處理器。
許多應用必須使用DMA,以盡可能降低功耗和減輕處理器負載。例如,健康和可穿戴設備可以處理大量的數據吞吐量,但它們也必須盡可能地節省電池電量,同時(shí)還要處理敏感數據。ADI公司在適用于低功耗可穿戴設備的微控制器上采用快速突發(fā)DMA架構,例如 MAX32660 和 MAX32670。此外,DARWIN Arm微控制器(例如 MAX32666 )是為集成Bluetooth? 5的可穿戴設備和物聯(lián)網(wǎng)應用而設計的。這些器件采用2個(gè)8通道突發(fā)DMA控制器,支持基于事件的事務(wù)。它們甚至配備了出色的安全硬件,具有安全引導加載程序和信任保護單元(TPU),可以加速ECDSA、SHA-2和AES加密。從早期的IBM電腦到網(wǎng)卡,再到現在的安全、低功耗可穿戴設備和物聯(lián)網(wǎng)設備,DMA是現代數字系統的基本特征。
免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問(wèn)題,請聯(lián)系小編進(jìn)行處理。
推薦閱讀:
集成1700V SiC MOSFET車(chē)規高壓開(kāi)關(guān)不僅是多個(gè)第一