Memory-mapped I/O refers to mapping registers and memory of peripheral devices into the same address space as main memory. This comes in contrast with Port-mapped I/O, which refers to mapping registers and memory of peripheral devices into a different address space than main memory.
- Less instructions needed to be implemented by the CPU - For RISC architectures, the same LOAD and STORE instructions can be used to access both main memory and peripherals. For CISC architectures, there is no need for additional IN and OUT instructions, neither for additional modifiers for instructions that access memory.
- Better abstraction over types of memory - The CPU treats all memory the same. For a simple example, it can easily start executing from ROM without loading the image into RAM first.
- Possibly tight in small address spaces - In 8-bit and 16-bit address spaces, memory-mapped I/O might not be affordable, especially with a large number of peripherals. That is, more peripherals can mean there is less space for main memory.