I can't make out what is the avantage of it comparing with the port designed I/O
Is it faster? Is it more reliable? Is it cheaper?
There are many advantages to memory mapped I/O
Support for special I/O mapping is generally a legacy issue. The x86 for example is (on some level) compatible all the way back to the 8008.
Very old processors often included I/O mapped device support because the memory address space was so small (often 65,536 bytes or less) that I/O addressing provided a way to preserve memory address space for actual memory.
Modern processors have larger (4G or larger) address spaces so that this is no longer an issue.
If you rely on port io you drive up the pin count. Memory mapping provides a more flexible method in the design. They're really two very different things with different intentions. Ports are generally speaking extensions of the processor that map to specific functions. A memory map is a extension that allows access. It's more abstract. At least until you put something into the map. :)