Yesterday I had an argument/debate with my friend.
My friend suggested that "memory mapped I/O" should be appropriately named "virtual memory mapped I/O", otherwise it would be misunderstood as something that copied back and forth between CPU ram and IO devices, like Fig 1.
Then I argued that this misunderstanding won't happen if you consider the actual hardware architecture: There is no such thing to do the copy. The hardware only redirects your access to a certain ram address to a device's space. For example, the ram's 0x5000 to the UART chip register in this video.
And then we came to the ambiguity of the term "memory". He thought memory referred to the physical memory, considering the device memory is not related to the CPU's physical memory, thus it should be called "virtual memory mapped I/O", since the mapped space looks like a part of the CPU RAM but actually not. With this ambiguity, I thought the virtual memory itself will be ambiguous considering it's originally describing how OS manages processes' ram, and now you use it for IO mapping.
In the end, he thought me don't care about the logic of language, and is ridiculous. I thought this is fine, and I do not care the that, then what?
----
RS232 interface with the 6551 UART
by Ben Eater
https://www.youtube.com/watch?v=zsERDRM1oy8