Topic summary
Memory-mapped I/O

Extracted from the Wikipedia article Memory-mapped I/O and port-mapped I/O.
x86
Memory-mapped I/O is preferred in IA-32 and x86-64 based architectures because the instructions that perform port-based I/O are limited to one register: EAX, AX, and AL. The port address is determined by either a byte-sized immediate value in the instruction or a value in DX register. In contrast, any general-purpose register can send or receive data to or from memory and memory-mapped I/O devices; memory-mapped I/O uses fewer instructions and can run faster than port I/O. AMD did not extend the port I/O instructions when defining the x86-64 architecture to support 64-bit ports, so 64-bit transfers cannot be performed using port I/O.