While admittedly effective at allowing arbitrarily large storage devices, PMIO storage creates a bottleneck. This bottleneck could be resolved by regressing to bank-partitioned MMIO storage, as was the practice with ROM cartridges. Additionally, the recent advent of NVRAM has opened up the possibility of writable MMIO storage, which was a challenge in the age of ROM cartridges. However, with the recent shift in conventional software development education toward high-level work, it's unlikely that drivers supporting NVRAM MMIO will ever be mainstreamed, and NVRAM will likely remain port-mapped.

89%Yeah You Are11%No Way
jaimes avatar Technology
0 4
The voters have decided that jaime is right! Vote on the post to say if you agree or disagree.

What is PMIO?

I can handle PIO, but PMIO returns Pink Mouse's Image Organiser.

@AliceD It's OK, I found it......

To be honest I think I like "Pink Mouse's Image Organiser" better. :)

For others' hindsight: PMIO = port-mapped input & output, MMIO = memory-mapped input & output. To understand the difference between PMIO and MMIO, it's crucial to understand the difference between memory and RAM. Many people think, as I once did, that memory and RAM are the same thing. However, in actuality, RAM only occupies a part of a computer's full memory space. The rest of the computer's devices -- often including the processor itself, and almost always including at least one I/O bus, which is what you plug things like USB devices into -- are also parts of memory. They're connected to the computer in such a way that memory addresses can point into the devices' internal storage. For a device's internal storage to be hotwired into the computer's memory address range in this way is referred to as the device being "mapped." A "mapped" device is considered to be "memory-mapped" if it's wired in such a way that the complete internal storage of the device can be indexed directly by memory addresses. On the other hand, it's considered to be "port-mapped" if there are only a small handful of memory addresses that correspond to the device's internal storage, and there's some kind of mechanism wired up to those addresses that pushes data into the real internal storage in order as it's fed to the mapped addresses, like an orderly queue dispersing into a large room through a narrow doorway.

So for example, while RAM is almost always memory-mapped / MMIO, removable media, like CD ROMs and USB sticks, is usually port-mapped / PMIO. Because removable media is port-mapped, let's say it's mapped into the system at address 0, and the removable media is 5 megabytes, then every time you write data to address 0, it gets stored into the next unused byte out of those 5 megabytes. And there's probably some other nearby address you can write to in order to seek within those 5 megabytes and change which byte is indexed next time a read or write occurs. But because RAM is memory-mapped, let's say it's mapped into the system at address 0 and you have 5 megabytes of RAM, then any address between 0 and 5 megabytes will just point directly to the corresponding byte of RAM. And then if you go beyond 5 megabytes, you'll just be pointing into either some other MMIO device or some other port.

Net result of me deciphering this is that I have no idea. I had suspected that from the onset.

Please   login   or signup   to leave a comment.