本文介紹在嵌入式系統(tǒng)編程中使用直接內(nèi)存訪問 (DMA) 的用例、優(yōu)點(diǎn)和缺點(diǎn)。本文介紹了 DMA 如何與外設(shè)和內(nèi)存模塊交互,以提高 CPU 的運(yùn)行效率。本文還將向讀者介紹不同的DMA總線接入架構(gòu),以及每種架構(gòu)的優(yōu)點(diǎn)。
嵌入式系統(tǒng)的一項(xiàng)常見任務(wù)是管理外部輸入。管理輸入會(huì)給處理器帶來(lái)大量不必要的計(jì)算壓力,導(dǎo)致處于有功功率模式的時(shí)間更長(zhǎng),響應(yīng)時(shí)間變慢。為了優(yōu)化功耗、保持對(duì)事件的快速響應(yīng)以及管理大型連續(xù)數(shù)據(jù)傳輸,具有直接存儲(chǔ)器訪問 (DMA) 功能的微控制器可以提供最佳解決方案。
直接內(nèi)存訪問 (DMA)
在涉及外設(shè)的系統(tǒng)應(yīng)用中,微處理器在很多方面都可能成為瓶頸。例如,在管理不斷發(fā)送數(shù)據(jù)的ADC時(shí),處理器可能會(huì)經(jīng)常中斷,以至于難以完成其他任務(wù)。DMA 是一種移動(dòng)數(shù)據(jù)并最大限度地減少處理器參與大型或快速數(shù)據(jù)事務(wù)的方法。您可以將 DMA 控制器視為一個(gè)協(xié)處理器,其唯一目的是與內(nèi)存和外設(shè)進(jìn)行交互。這使得主處理器能夠成功地管理貪婪的外設(shè),專注于另一項(xiàng)任務(wù),甚至在后臺(tái)進(jìn)行數(shù)據(jù)交易時(shí)進(jìn)入睡眠狀態(tài)并節(jié)省電力。例如,在 Arm 架構(gòu)上,DMA 模塊可以在 LP2(睡眠)或 LP3(運(yùn)行)模式下運(yùn)行。這在需要延長(zhǎng)電池壽命的應(yīng)用中具有明顯的優(yōu)勢(shì),例如可穿戴傳感器集線器和智能手表。?
優(yōu)點(diǎn)和缺點(diǎn)
DMA在許多數(shù)字系統(tǒng)中都很有用,有時(shí)甚至需要它來(lái)管理大量的總線流量。它已被用于網(wǎng)卡,圖形卡,甚至一些原始的IBM PC。話雖如此,將DMA整合到設(shè)計(jì)中確實(shí)有一些權(quán)衡。
使用 DMA 的優(yōu)勢(shì) | |
中央處理器時(shí)間 | DMA 最大限度地減少了對(duì)處理器執(zhí)行和中斷的需求, 減少數(shù)據(jù)事務(wù)所需的 CPU 時(shí)間。 |
功耗 | 如果 DMA 允許處理器在 DMA 傳輸期間休眠,則使用 DMA 可以產(chǎn)生最小化功耗的機(jī)會(huì)。 |
并行操作 | 根據(jù)系統(tǒng)總線的體系結(jié)構(gòu)細(xì)節(jié),處理器可能能夠在發(fā)生外設(shè)事務(wù)時(shí)執(zhí)行其他操作。 |
使用 DMA 的優(yōu)勢(shì) |
|
成本 | 將系統(tǒng)與 DMA 合并需要 DMA 控制器,這可能會(huì)使系統(tǒng)更加昂貴。 |
復(fù)雜性 | 雖然 DMA 可以降低中斷頻率,但它會(huì)增加應(yīng)用程序固件的大小和復(fù)雜性。 |
平臺(tái)依賴性 | DMA 控制器在制造商之間和制造商內(nèi)部具有不同的內(nèi)部架構(gòu),并且根據(jù)其本機(jī)總線訪問方案可能具有不同的行為。 |
緩存不連貫性 | DMA 事務(wù)可以通過(guò)寫入內(nèi)存層次結(jié)構(gòu)的緩存層而導(dǎo)致邏輯錯(cuò)誤。這可以通過(guò)使用緩存一致的系統(tǒng)體系結(jié)構(gòu)或在 DMA 完成后使緩存存儲(chǔ)失效來(lái)解決。 |
總線訪問和 CPU 周期
雖然DMA控制器在節(jié)能或加速嵌入式系統(tǒng)方面非常有效,但它們的實(shí)現(xiàn)并沒有高度標(biāo)準(zhǔn)化。有多種方案可以確保不會(huì)與 CPU 同時(shí)授予內(nèi)部總線訪問??偩€訪問方案的目標(biāo)主要是避免對(duì)相同內(nèi)存位置的并發(fā)訪問,這可能導(dǎo)致緩存不一致和邏輯錯(cuò)誤。單個(gè)DMA控制器通常配置為采用這些方案之一,因?yàn)槭褂妹糠N方案可能需要不同的硬件或固件控制。大多數(shù) DMA 控制器使用的總線訪問方案是突發(fā)、周期竊取和透明 DMA。
透明 DMA 一次只能執(zhí)行一個(gè)操作,但它還必須等待處理器執(zhí)行指令,從而訪問所需的數(shù)據(jù)或地址總線。需要額外的邏輯來(lái)驗(yàn)證此訪問限制,這種類型的 DMA 通常是最慢的。透明 DMA 在需要額外處理且不需要訪問內(nèi)存總線的應(yīng)用中可能是有利的。在這種情況下,優(yōu)點(diǎn)是消除了對(duì)CPU的限制,因?yàn)樘幚砥鞑槐赝耆V惯\(yùn)行。
DMA 的類型 | 優(yōu)點(diǎn) | 缺點(diǎn) |
突發(fā) DMA | 最快的 DMA 類型 | CPU 空閑時(shí)間相對(duì)較長(zhǎng) |
周期竊取 DMA | CPU 不會(huì)長(zhǎng)時(shí)間閑置 連續(xù)時(shí)期 | 比突發(fā) DMA 慢 |
透明 DMA | 無(wú)需限制 CPU 使用量 | 最慢形式的 DMA |
圖1.DMA 操作期間突發(fā) DMA 的體系結(jié)構(gòu)圖。
突發(fā) DMA 通過(guò)不頻繁的大突發(fā)發(fā)生,其中 DMA 控制器向目標(biāo)緩沖區(qū)發(fā)送緩沖區(qū)可以容納的盡可能多的數(shù)據(jù)。DMA 控制器在很短的時(shí)間內(nèi)阻止 CPU 操作以移動(dòng)大量?jī)?nèi)存,然后將總線讓回主 CPU,重復(fù)直到傳輸完成。突發(fā) DMA 通常被認(rèn)為是最快的類型。
圖2.DMA 操作期間的周期竊取 DMA 發(fā)生在兩個(gè) CPU 周期之間。
相反,單字節(jié)傳輸或周期竊取 DMA 從 CPU 獲取提示,并且僅在 CPU 指令之間執(zhí)行操作。它在兩個(gè) CPU 周期之間插入單個(gè)操作,因此實(shí)際上是在“竊取”CPU 時(shí)間。由于一次執(zhí)行一個(gè)操作的限制,它通常比突發(fā) DMA 慢。
圖3.DMA 操作期間的透明 DMA 發(fā)生在處理器處理不訪問數(shù)據(jù)或地址總線的任務(wù)時(shí)。
突發(fā) DMA 架構(gòu)示例
圖4.MAX32660上DMA控制器的結(jié)構(gòu)圖
在MAX32660上可以找到突發(fā)DMA控制器的示例(見圖4)。上部路徑對(duì)應(yīng)于數(shù)據(jù)流,下部路徑表示高級(jí)高性能總線 (AHB) 和 DMA 邏輯之間的控制/狀態(tài)流。DMA 控制器可以充當(dāng) AHB 與內(nèi)存或外設(shè)模塊之間的緩沖接口,具體取決于其配置方式。DMA 邏輯位于 DMA 緩沖區(qū)和每個(gè)外設(shè)之間,用于在事務(wù)期間獨(dú)立管理每個(gè)唯一的外設(shè)總線。DMA 操作一次最多可以移動(dòng) 32 個(gè)字節(jié),前提是源/目標(biāo)緩沖區(qū)可以包含這么多數(shù)據(jù)。緩沖區(qū)最多可容納 16 MB,并可配置為發(fā)送或接收 I2C, SPI, I2S和UART以及內(nèi)部存儲(chǔ)器傳輸。DMA 控件的編程可能因協(xié)議而異,但外設(shè)事務(wù)僅由 DMA 控制器管理。仲裁器模塊控制四個(gè) DMA 通道和 CPU 之間的總線訪問限制,根據(jù)優(yōu)先級(jí)系統(tǒng)授予請(qǐng)求。
現(xiàn)代 DMA 選項(xiàng)
總之,DMA是現(xiàn)代嵌入式系統(tǒng)的關(guān)鍵功能,這些系統(tǒng)管理大量傳感器,需要高吞吐量、高效率和低功耗運(yùn)行。它的行為類似于專用于內(nèi)存和外設(shè)總線事務(wù)的協(xié)處理器。
對(duì)于許多應(yīng)用來(lái)說(shuō),使用 DMA 對(duì)于最大限度地降低功耗和減輕處理器負(fù)載至關(guān)重要。例如,健康和可穿戴設(shè)備處理大量數(shù)據(jù)吞吐量,但它們還必須盡可能多地節(jié)省電池電量,同時(shí)處理敏感數(shù)據(jù)。ADI公司在微控制器上提供快速突發(fā)DMA架構(gòu),這些微控制器非常適合低功耗可穿戴設(shè)計(jì),如MAX32660和MAX32670。此外,MAX32666等DARWIN Arm微控制器專為集成藍(lán)牙5的可穿戴和物聯(lián)網(wǎng)應(yīng)用而設(shè)計(jì)。這些器件具有兩個(gè) 8 通道突發(fā) DMA 控制器,集成了對(duì)基于事件的事務(wù)的支持。它們甚至具有一流的安全硬件,帶有安全引導(dǎo)加載程序和信任保護(hù)單元 (TPU),用于加速 ECDSA、SHA-2 和 AES 加密。從早期的IBM PC到網(wǎng)卡,再到現(xiàn)在的安全、低功耗可穿戴和物聯(lián)網(wǎng)設(shè)備,DMA是現(xiàn)代數(shù)字系統(tǒng)的基本特征。
審核編輯:郭婷
-
控制器
+關(guān)注
關(guān)注
114文章
17100瀏覽量
184221 -
cpu
+關(guān)注
關(guān)注
68文章
11077瀏覽量
217022 -
微處理器
+關(guān)注
關(guān)注
11文章
2383瀏覽量
84162
發(fā)布評(píng)論請(qǐng)先 登錄
評(píng)論