Memory-Mapped IO
MMIO is a technique. You access all IO devices the same way you access memory. Memory is accessed by its address pointers. In the same way, MMIO adds the device address registers to the CPU's known list of addresses.
It gives one standard way to access all IO devices. Device drivers and the OS access everything the same way.
Address mapping
At boot, the kernel queries all the connected devices and their information. Then it initializes the devices. It assigns them memory in the same address space the CPU uses.
The kernel's page table is updated to map the IO devices too.
This feature is called MMIO - Memory Mapped IO.

With MMIO, the device registers sit in the CPU's memory space. With Port IO, the CPU must use separate instructions and addresses for the devices.
PIO is legacy. It isn't used anymore.
MMIO and PCI
MMIO can work with or without PCI. It works whether or not the device supports the PCI protocol.
- PCI - The physical addresses are allocated at boot by CPU and written to base address registers.
- non PCI - The address ranges are fixed in the device's firmware. MMU will map these physical addresses to virtual address space.