Bus Addresses, Physical Addresses and Virtual Addresses
The same byte of memory has up to three different names: the virtual address your code holds, the physical address on the memory chips, and the bus address a device must put on the wire to reach it. They are often different numbers, because translation hardware sits between them, and on many systems a chip called an input output memory management unit remaps device accesses as well. Hand a device a pointer from your own code instead of the bus address the system gives you, and the device will happily scribble on whatever really lives at that number.
Questions this Concept answers
- Why is the pointer your driver code holds usually the wrong number to hand to a device?
Direct Memory Access (DMA) Controllers in Computer Architecture
A Direct Memory Access (DMA) controller is a specialized processor that transfers data directly between main memory and peripheral devices without requiring the CPU to execute each transfer instructi…