DMA
Posted: Wed Feb 19, 2014 11:28 pm
when the cpu gives an address to the DMA controller to write to, is it a physical address or virtual?
Now again, what is actually performing virtual to physical translations? How is it wired to the DMA controller?icealys wrote:the OS maps virtual addresses to physical addresses and updates a page table which is sent to the memory management unit.
the MMU is doing the translations and I think anytime you access RAM the transfer needs to go through the MMU.Now again, what is actually performing virtual to physical translations? How is it wired to the DMA controller?
Wrong. Don't think, know. If you only think it means you're too lazy to make sure.I think
umm I'm not too sure why you are asking these questions in my thread but they are both on the die of the cpu.Now back to the original question: Where is the MMU implemented? Where is the DMA controller?
Because I want to teach you something more important than just the answer, and the alternative is reporting you for breaking forum rules (smart questions, required knowledge).icealys wrote:umm I'm not too sure why you are asking these questions in my thread
Post your source, please.but they are both on the die of the cpu.
The DMA controller is in the South Bridge. Hisorically it was a self contained chip.icealys wrote:umm I'm not too sure why you are asking these questions in my thread but they are both on the die of the cpu.Now back to the original question: Where is the MMU implemented? Where is the DMA controller?
Virtual memory is implemented in the processor, and the operating system makes use of the hardware's capabilities. Just as it does with the DMA controller.virtual memory is implemented on the operating system...
DMA doesn't use virtual addresses. The chipset knows nothing about the memory mapping effected by the CPU. It uses physical addresses. That is why the OS's memory manager has to make special arrangements for devices which need contiguous chunks of physical memory.icealys wrote:thats true...
the IOMMU is what makes it possible for DMA to use virtual addresses which hides fragmentation of physical RAM.
Thanks for providing the incomplete answer. Actually, there are many DMA controllers in a computer - none of which are in the CPU because DMA is meant to bypass the CPU.mathematician wrote:The DMA controller is in the South Bridge. Hisorically it was a self contained chip.
Not exactly true. It does if there's a GART or IOMMU in the way.mathematician wrote:DMA doesn't use virtual addresses.
Which is not the MMU, is located elsewhere (not on the CPU), but still performs the same task of address translation and protection. Although more often than that, it's not even present at all.IOMMU