How to interpreter I/O and Memory in windows System information Msinfo32? Do I/O addresses represent memory location that mapped I/O device register and how about addresses in memory? If there are physical memory address, then they should be different every time right?


What you see under "I/O" are "addresses" but they are neither virtual addresses nor physical memory addresses. They are in I/O port space. They are meaningful only to special instructions like IN and OUT.

The "memory" page shows addresses within physical address space. This is the same address space in which RAM lives. These are the addresses of "registers" and buffer space that are defined by various I/O devices and certain other devices on the motherboard. Drivers talk to these devices by referencing virtual addresses that the OS associates with these physical addresses.

Both port and memory addresses for devices complying with PCI standards for Bus Address Registers are configurable by the OS. However, all of this configuration is done at boot time and most devices do end up at the same addresses from one boot to the next. A few devices are assigned to well-known addresses for legacy reasons. A few other devices (such as legacy serial and parallel ports, if you have them) are on the LPC bus. Programmatically this looks like ISA, but electrically it's a serial bus, and like ISA cannot be software-configured; these devices are hardwired to their addresses.

btw, I/O port space is a relic of ancient architectures, or at least architectures with ancient roots (like x86). Most modern architectures don't implement any such thing; everything is in physical memory space.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.