Some DMA controllers support direct virtual memory access,where the targets of I/O operations are specified as virtual addresses and a translation from virtual to physical address is performed during the DMA.How does this design complicate the design of the DMA controller?
what are the advantages of providing such a functionality ?
Direct virtual memory access allows a device to perform a transfer from two memory-mapped devices without the intervention of the CPU or the use of main memory as a staging ground; the device simply issue memory operations to the memory-mapped addresses of a target device and the ensuing virtual address translation guarantees that the data is transferred to the appropriate device.This functionality,however,comesat the cost of having to support virtual address translation on addresses accessed by a DMA controller and requires the addition of an address translation unit to the DMA controller.The address translation results in both hardware and software costs and might also result in coherence problems between the data structures maintained by the CPU for address translation and corresponding structures used by the DMA controller.These coherence issues would also need to be dealt with and results in further increase in system complexity.