Memory-Mapped I/O vs Port I/O

In memory-mapped I/O, how does the CPU communicate with hardware devices?