我的一位朋友告訴我,在x86架構上,DMA控制器不能在兩個不同的RAM位置之間傳輸。它只能在RAM和外設之間傳輸(如PCI總線)。DMA傳輸RAM-RAM
這是真的嗎?
因爲AFAIK DMA控制器應該能夠位於總線上並具有地址的任意設備之間。特別是如果源地址和描述地址屬於同一個物理設備,我看不出什麼問題。
我的一位朋友告訴我,在x86架構上,DMA控制器不能在兩個不同的RAM位置之間傳輸。它只能在RAM和外設之間傳輸(如PCI總線)。DMA傳輸RAM-RAM
這是真的嗎?
因爲AFAIK DMA控制器應該能夠位於總線上並具有地址的任意設備之間。特別是如果源地址和描述地址屬於同一個物理設備,我看不出什麼問題。
ISA(還記得嗎?;-) DMA芯片肯定有Fetch-and-Deposit傳輸類型。
然而,從MASM32 forums:
嗨,
在 「無證PC」 檢查, 他說,存儲器到存儲器DMA是 可能。他接着說, 可能有問題,限制 和CPU可以(在386+ MOVSD)反正 做副本 比DMA硬件更快。
所以它似乎是肯定的,你可以, 但誰在乎,這樣的事情。
問候,
史蒂夫N.
是,存儲器到存儲器的傳輸,可以很好達到80386家我曾與 「現代」 的x86的:)
指定源RAM嘗試和目的地。您可能需要注意L1緩存的一致性,具體取決於您正在編程的設備以及是否啓用了緩存。
您可能會發現在Linux內核中的一些代碼對影子內存刷新視頻RAM頁。這鈴響了。
在ARM MEM-到-MEM DMA顯著提高性能。
爲什麼要將RAM從一個位置複製到另一個位置? x86有一個內存分頁系統,所以任何內存頁面都可以在任何地址的虛擬內存中看到。 – 2010-11-28 16:55:24
@GJ未處於實時模式。 – 2011-02-14 21:12:31