fbpx
维基百科

直接記憶體存取

直接記憶體存取Direct Memory AccessDMA)是计算机科学中的一种内存访问技术。它允許某些電腦內部的硬體子系統(电脑外设),可以獨立地直接读写系統記憶體,而不需中央處理器CPU)介入處理 。在同等程度的處理器负担下,DMA是一种快速的数据传送方式。很多硬體的系統會使用DMA,包含硬碟控制器、繪圖顯示卡網路卡音效卡

直接記憶體存取

DMA是所有現代電腦的重要特色,它允許不同速度的硬體裝置來溝通,而不需要依於中央處理器的大量中斷負載。否則,中央處理器需要從來源把每一片段的資料複製到暫存器,然後把它们再次寫回到新的地方。在這個時間中,中央處理器對於其他的工作來說就無法使用。

DMA傳輸常使用在將一個記憶體區從一個裝置複製到另外一個。當中央處理器初始化這個傳輸動作,傳輸動作本身是由DMA控制器來實行和完成。典型的例子就是移動一個外部記憶體的區塊到晶片內部更快的記憶體去。像是這樣的操作並沒有讓處理器工作拖延,使其可以被重新排程去處理其他的工作。DMA傳輸對於高效能嵌入式系統演算法和網路是很重要的。 舉個例子,個人電腦ISA DMA控制器擁有8個DMA通道,其中的7個通道是可以讓計算機的中央處理器所利用。每一個DMA通道有一個16位元位址暫存器和一個16位元計數暫存器。要初始化資料傳輸時,裝置驅動程式一起設定DMA通道的位址和計數暫存器,以及資料傳輸的方向,讀取或寫入。然後指示DMA硬體開始這個傳輸動作。當傳輸結束的時候,裝置就會以中斷的方式通知中央處理器。

"分散-收集"(Scatter-gather)DMA允許在一次單一的DMA處理中傳輸資料到多個記憶體區域。相當於把多個簡單的DMA要求串在一起。同样,这样做的目的是要減輕中央處理器的多次輸出輸入中斷和資料複製任務。 DRQ意為DMA要求;DACK意為DMA確認。這些符號一般在有DMA功能的電腦系統硬體概要上可以看到。它們表示了介於中央處理器和DMA控制器之間的電子訊號傳輸線路。

缓存一致性问题

DMA會導致缓存一致性問題。想像中央處理器帶有缓存與外部記憶體的情況,DMA的運作則是去存取外部記憶體,當中央處理器存取外部記憶體某个位址的時候,暫時先將新的值寫入缓存中,但並未將外部記憶體的資料更新,若在缓存中的資料尚未更新到外部記憶體前發生了DMA,則DMA過程將會讀取到未更新的資料。

相同的,如果外部裝置寫入新的值到外部記憶體內,則中央處理器若存取缓存时則會存取到尚未更新的資料。

這些問題可以用兩種方法來解決:

  1. 快取同調系統(Cache-coherent system):以硬體方法來完成,當外部裝置寫入記憶體時以一個信號來通知缓存控制器某記憶體位址的值已經過期或是應該更新資料。
  2. 非同調系統(Non-coherent system):以軟體方法來完成,操作系统必須確認缓存讀取時,DMA程序已經開始或是禁止DMA發生。

第二種的方法會造成DMA的系統負擔。

DMA引擎

除了与硬件交互相关外,DMA也可为内存耗费减负。如Intel I/O加速技术(IOAT)。IOAT的後續者是Xeon E5處理器的Data Direct I/O(DDIO)技術。

參考

外部連結

  • ,出自Linux Device Drivers,第二版, Alessandro Rubini & Jonathan Corbet

直接記憶體存取, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目没有列出任何参考或来源, 2018年6月3日, 維基百科所有的內容都應該可供查證, 请协助補充可靠来源以改善这篇条目, 无法查证的內容可能會因為異議提出而被移除, 此條目需要更新, 2018年6月3日, 請更新本文以反映近況和新增内容, 完成修改後請移除本模板, 此條目可参照英語維基百科相應條目来扩充, 2020年7月28日, 若您熟悉来源语言和主题, 请协助参考外语维基百科扩充条目, 请勿直接提交机械翻译, 也不要翻译不可. 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目没有列出任何参考或来源 2018年6月3日 維基百科所有的內容都應該可供查證 请协助補充可靠来源以改善这篇条目 无法查证的內容可能會因為異議提出而被移除 此條目需要更新 2018年6月3日 請更新本文以反映近況和新增内容 完成修改後請移除本模板 此條目可参照英語維基百科相應條目来扩充 2020年7月28日 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 直接記憶體存取 Direct Memory Access DMA 是计算机科学中的一种内存访问技术 它允許某些電腦內部的硬體子系統 电脑外设 可以獨立地直接读写系統記憶體 而不需中央處理器 CPU 介入處理 在同等程度的處理器负担下 DMA 是一种快速的数据传送方式 很多硬體的系統會使用DMA 包含硬碟控制器 繪圖顯示卡 網路卡和音效卡 目录 1 直接記憶體存取 2 缓存一致性问题 3 DMA引擎 4 參考 5 外部連結直接記憶體存取 编辑DMA是所有現代電腦的重要特色 它允許不同速度的硬體裝置來溝通 而不需要依於中央處理器的大量中斷負載 否則 中央處理器需要從來源把每一片段的資料複製到暫存器 然後把它们再次寫回到新的地方 在這個時間中 中央處理器對於其他的工作來說就無法使用 DMA傳輸常使用在將一個記憶體區從一個裝置複製到另外一個 當中央處理器初始化這個傳輸動作 傳輸動作本身是由DMA控制器來實行和完成 典型的例子就是移動一個外部記憶體的區塊到晶片內部更快的記憶體去 像是這樣的操作並沒有讓處理器工作拖延 使其可以被重新排程去處理其他的工作 DMA傳輸對於高效能嵌入式系統演算法和網路是很重要的 舉個例子 個人電腦的ISA DMA控制器擁有8個DMA通道 其中的7個通道是可以讓計算機的中央處理器所利用 每一個DMA通道有一個16位元位址暫存器和一個16位元計數暫存器 要初始化資料傳輸時 裝置驅動程式一起設定DMA通道的位址和計數暫存器 以及資料傳輸的方向 讀取或寫入 然後指示DMA硬體開始這個傳輸動作 當傳輸結束的時候 裝置就會以中斷的方式通知中央處理器 分散 收集 Scatter gather DMA允許在一次單一的DMA處理中傳輸資料到多個記憶體區域 相當於把多個簡單的DMA要求串在一起 同样 这样做的目的是要減輕中央處理器的多次輸出輸入中斷和資料複製任務 DRQ意為DMA要求 DACK意為DMA確認 這些符號一般在有DMA功能的電腦系統硬體概要上可以看到 它們表示了介於中央處理器和DMA控制器之間的電子訊號傳輸線路 缓存一致性问题 编辑DMA會導致缓存一致性問題 想像中央處理器帶有缓存與外部記憶體的情況 DMA的運作則是去存取外部記憶體 當中央處理器存取外部記憶體某个位址的時候 暫時先將新的值寫入缓存中 但並未將外部記憶體的資料更新 若在缓存中的資料尚未更新到外部記憶體前發生了DMA 則DMA過程將會讀取到未更新的資料 相同的 如果外部裝置寫入新的值到外部記憶體內 則中央處理器若存取缓存时則會存取到尚未更新的資料 這些問題可以用兩種方法來解決 快取同調系統 Cache coherent system 以硬體方法來完成 當外部裝置寫入記憶體時以一個信號來通知缓存控制器某記憶體位址的值已經過期或是應該更新資料 非同調系統 Non coherent system 以軟體方法來完成 操作系统必須確認缓存讀取時 DMA程序已經開始或是禁止DMA發生 第二種的方法會造成DMA的系統負擔 DMA引擎 编辑除了与硬件交互相关外 DMA也可为内存耗费减负 如Intel I O加速技术 IOAT IOAT的後續者是Xeon E5處理器的Data Direct I O DDIO 技術 參考 编辑远程直接内存访问 DMA攻击外部連結 编辑mmap 和DMA 出自Linux Device Drivers 第二版 Alessandro Rubini amp Jonathan Corbet DMA和中斷的處理 取自 https zh wikipedia org w index php title 直接記憶體存取 amp oldid 77200008, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。